我训练了CatBoostClassifier
来解决我的分类任务。现在我需要保存模型并将其用于另一个应用程序进行预测。为了做到这一点,我通过save_model
方法保存模型,并通过load_model
方法恢复它。
但是,每次我在恢复的模型中调用predict
时都会出错:
CatboostError: There is no trained model to use predict(). Use fit() to train model. Then use predict().
因此看起来我需要再次训练我的模型,而我需要恢复预训练模型并仅将其用于预测。
我在这做错了什么?有没有一种特殊的方法可以用来加载预测模型?
我的培训过程如下:
model = CatBoostClassifier(
custom_loss=['Accuracy'],
random_seed=42,
logging_level='Silent',
loss_function='MultiClass')
model.fit(
x_train,
y_train,
cat_features=None,
eval_set=(x_validation, y_validation),
plot=True)
...
model.save("model.cbm")
我使用此代码恢复模型:
model = CatBoostClassifier(
custom_loss=['Accuracy'],
random_seed=42,
logging_level='Silent',
loss_function='MultiClass')
model.load_model("model.cbm")
...
predict = self.model.predict(inputs)
几个小时后,我意外地找到了解决方案。模型加载在外部python模块中实现,然后导入到Jupyter Notebook中。原来我只需要重启Jupyter内核。
#catboost.save_model(model_name)
from catboost import CatBoostRegressor, CatBoostClassifier
classifier = CatBoostClassifier()
classifier.load_model(model_name)