我正在尝试将skopt的BayesSearchCV方法与Catboost.However一起使用,我不知道如何将catboost原生的分类特征的索引传递给bayesSearch object的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()抛出错误无法将分类转换为浮点型,
我知道,错误是因为我没有传递分类变量的索引,但是我不能在贝叶斯的fit()中传递它们。我尝试了catboost的method.Also ()方法,但也不起作用。
发布于 2019-05-30 10:29:23
我在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,
)https://stackoverflow.com/questions/55675253
复制相似问题