我在Catboost库的Python版本中使用CatBoostRegressor。
根据文档,我可以使用过度拟合探测器,我正在这样做:
model = CatBoostRegressor(iterations=iters, learning_rate=0.03, depth=depth, verbose=True, od_pval=1, od_type='IncToDec', od_wait=20)
model.fit(train_pool, eval_set=validation_pool)
# this code didn't executed
model.save_model(model_name)
然而,在过度拟合发生后,我的Python脚本被中断,过早停止,选择你想要的任何短语,并保存模型部分没有被执行,这导致了很多腰部时间并没有结果。我没有得到任何堆栈跟踪。
是否有可能在CatBoost中处理它并节省适合工作的时间?
答案 0 :(得分:6)
使用此代码。无论try块中发生什么,它都会保存模型。
try:
model.fit(X, y)
finally:
model.save_model()
答案 1 :(得分:0)
好吧,我不知道catboost是如何工作的,但我想分享一种不同的方式来保存/存储你训练过的数据,这可能会有所帮助
import pickle
model = CatBoostRegressor(iterations=iters, learning_rate=0.03, depth=depth, verbose=True, od_pval=1, od_type='IncToDec', od_wait=20)
model.fit(train_pool, eval_set=validation_pool)
#----To store model----------
filename = 'final_model' # name to store model
pickle.dump(model, open(filename, 'wb')) # pickling
#-----To load model------------
loaded_model = pickle.load(open(filename, 'rb'))
答案 2 :(得分:-3)
你可以用泡菜来做,只需训练你的模块并使用泡菜将其转储。
pickle.dump(regr, open("models/svrrbf.sav",'wb'))
此外,您可以使用该模块测试您的输入。 希望它有所帮助