如何在Python中正确加载CatBoost中的预训练模型

问题描述 投票:0回答:2

我训练了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 catboost
2个回答
0
投票

几个小时后,我意外地找到了解决方案。模型加载在外部python模块中实现,然后导入到Jupyter Notebook中。原来我只需要重启Jupyter内核。


0
投票
#catboost.save_model(model_name)

from catboost import CatBoostRegressor, CatBoostClassifier

classifier = CatBoostClassifier()

classifier.load_model(model_name)
© www.soinside.com 2019 - 2024. All rights reserved.