在CatBoost发生过度拟合后,有没有办法保存经过训练的模型?

时间:2017-11-19 17:53:48

标签: python machine-learning catboost

我在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中处理它并节省适合工作的时间?

3 个答案:

答案 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'))

此外,您可以使用该模块测试您的输入。 希望它有所帮助