带有CatBoost的Skopt的BayesSearchCV

时间:2019-04-14 12:28:22

标签: catboost

我正在尝试将Skopt的BayesSearchCV方法与Catboost结合使用,但是我对将Catboost固有的分类特征的索引传递到bayesSearch对象的fit()方法上感到困惑。

clf = catboost.CatBoostClassifier()
search_spaces = {'iterations': (10, 1000),
                 'depth': (1, 10),
                 'learning_rate': (0.001, 0.5),
                 'random_strength': (1e-9, 10)}
pt = BayesSearchCV(clf,
                    search_spaces,
                    n_iter=40)
pt.fit(x_train,y_train)

fit()引发错误,无法将类别转换为浮点型

我知道,错误是因为我没有传递分类变量的索引,但是我无法在Bayes的fit()方法中传递它们,也尝试了catboost的pool()方法,该方法也不起作用。

1 个答案:

答案 0 :(得分:0)

我对CalibratedClassifierCV有类似的问题。因此,在此处发布解决方案。也许对您有用。

您可以尝试通过首先将分类特征编码为数值来愚弄BayesSearchCV来解决此问题,但是在启动CatBoostClassifier()时仍传递分类特征索引,以便CatBoost可以适当地利用它们:

# Import necessary libraries
from sklearn.calibration import CalibratedClassifierCV
from catboost import CatBoostClassifier

# Initialize Calibrated Classifier with Catboost
model_combined = CalibratedClassifierCV(
    CatBoostClassifier(cat_features=<cat_features_indexes>),
    method='isotonic',
    cv=5,
)