CatBoost出现过拟合后,有办法保存训练好的模型吗?

Is there way to save trained model after overfitting occurs in CatBoost?

我在 Python 版本的 Catboost 库中使用 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 中处理它并节省数小时的装配工作?

嗯,我不知道 catboost 是如何工作的,但我想分享一种不同的方式来 save/store 你的训练数据也许它可以帮助

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

使用此代码。无论 try 块中发生什么,它都会保存模型。

try:
    model.fit(X, y)
finally:
    model.save_model()

你可以用 pickle 做到这一点,只需训练你的模块并使用 pickle 转储它。

 pickle.dump(regr, open("models/svrrbf.sav",'wb'))

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