Catboost:如何将cat_features传递给 Python 中保存的模型?



我有这个预先训练的保存模型,我在其中告知了我的分类特征,如果我在训练后立即预测,它工作正常。现在我想在另一个上下文中再次使用它,但我不知道如何正确通知分类功能。我试过这个:

model = CatBoostClassifier(cat_features=var_categ)  
model.load_model('catmod.cat')

但是当我试图预测时:

modelo.predict(base)

我收到此错误:

CatBoostError: features data: pandas.DataFrame column 'cod_var1' has dtype 'category' but is not in  cat_features list

是的,我仔细检查了该列是否在var_categ。

首先,您不需要指定 catboost 分类器cat_features因为模型已经具有来自load_model的此信息。

我会从您的错误中猜测,当您在新数据集上使用预测时,您的特征会移动 1 个位置,从而给您带来错误。

如果没有看到用于处理用于训练和预测的数据的代码,就没有足够的代码可以继续下去。该错误意味着在训练模型时,"cod_var1"不在分类特征列表中。它可能在var_categ中,但模型指示它不在用于训练模型的分类特征列表中。

在数据集base中,cod_var1是一个"类别"dtype。由于这是一个特定于 CatBoost 的 dtype(不是在创建数据帧时由 pandas 自动设置的 dtype(,因此在数据加载和预测之间似乎有一些代码来设置 dtype。我假设从您训练它到现在,这些数据处理步骤发生了一些变化,使得预测不完全相同(相同的列以相同的顺序具有相同的类型(。

最新更新