首页 > 解决方案 > CATBOOST 回归器中的交叉验证:ValueError:分类指标无法处理二进制和连续目标的混合

问题描述

我有一个没有空值的数据框,只有数值 我已经做了必要的转换)

CATBOOST 实施

from catboost import CatBoostRegressor
from sklearn.model_selection import cross_val_score
CatBoost_clf=CatBoostRegressor()
CatBoost_clf.fit(X, y)
print('Train Accuracy',cross_val_score(CatBoost_clf, X_train, y_train, 
    cv=3, scoring='accuracy'))
print('Test Accuracy',cross_val_score(CatBoost_clf, X_test, y_test, cv=3, 
    scoring='accuracy'))

错误

> ----> 5 print('Accuracy:',cross_val_score(CatBoost_clf, X, y, cv=3, scoring='accuracy'))

> ValueError: Classification metrics can't handle a mix of binary and continuous targets

如何在 CATBOOST 上计算交叉验证准确度(cv=3 或 3 次验证集迭代)?(输出 y 的值为 0 和 1)

标签: pythonpandasmachine-learningscikit-learncatboost

解决方案


你应该使用的是CatBoostClassifier.

您正在使用CatBoostRegressor,它旨在最小化基于连续值(例如 0.43823)的误差。例如CatBoostClassifier,分类器采用分类输入值(例如,0 或 1),这就是您所拥有的。在您的示例中,y是:

0    1
1    0
2    0
3    0
4    0
5    0
6    1

这绝对是分类的,而不是连续的。


推荐阅读