具有分类功能的BaggingClassifier和CatBoost无法正常工作

时间:2019-12-07 11:23:34

标签: python numpy scikit-learn data-science catboost

我想运行带有CatBoostClassifier作为估计器的sklearn.ensemble.BaggingClassifier,但是事情有一些分类功能,这会导致这种错误:

  

CatBoostError:“数据”是浮点数值类型的numpy数组,表示没有分类特征,但是“ cat_features”参数指定了非零数量的分类特征

clf = CatBoostClassifier(task_type='GPU',
                         n_estimators=8000,
                         early_stopping_rounds=5,
                         verbose=250,
                         cat_features=['avg_day_of_week', 'avg_month', 'mode_subgroup', 'mode_small_group']
                        ) 

from sklearn.ensemble import BaggingClassifier
bag_clf = BaggingClassifier(clf, n_estimators=10, max_samples=0.8)
bag_clf.fit(X_train.drop('client_id', axis=1), y_train)

是否可以克服此问题?

1 个答案:

答案 0 :(得分:0)

来自catboost官方文档: why catboost cant handle NaNs from float type as categorical features:

一种简单的解决方法是将numpy矩阵转换为pd.dataframe:

bag_clf.fit(pd.DataFrame(X_train.drop('client_id', axis=1)), y_train)