我正在尝试将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()方法,该方法也不起作用。
答案 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,
)