#catboost
#catboost
Вопрос:
Я пытаюсь использовать метод BayesSearchCV от skopt с помощью Catboost.Однако я не понимаю, куда передавать индексы категориальных функций, присущих catboost, в метод fit() объекта bayesSearch.
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() выдает ошибку не удалось преобразовать категориальный в float,
я знаю, ошибка в том, что я не передаю индексы категориальных переменных, но я не могу передать их в метод Байеса fit() .Также попробовал метод pool() от catboost, который тоже не работает.
Ответ №1:
У меня была аналогичная проблема с 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,
)