Скопт BayesSearchCV с CatBoost - PullRequest
       27

Скопт BayesSearchCV с CatBoost

2 голосов
/ 14 апреля 2019

Я пытаюсь использовать метод Скопта BayesSearchCV с 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 () ошибка throws не может преобразовать категориальный в float,

я знаю, ошибка в том, что я не передаю индексы категориальных переменных, но я не могу передать их в методе байеса fit ().Также попробовал метод pool () catboost, который тоже не работает.

1 Ответ

1 голос
/ 30 мая 2019

У меня была похожая проблема с 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,
)
...