5

我在 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 中处理它并节省数小时的装配工作?

4

3 回答 3

7

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

try:
    model.fit(X, y)
finally:
    model.save_model()
于 2017-12-05T22:49:24.157 回答
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'))
于 2017-12-05T11:41:45.463 回答
-3

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

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

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

于 2017-12-06T06:21:46.150 回答