python - 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)
解决方案
你应该使用的是CatBoostClassifier
.
您正在使用CatBoostRegressor
,它旨在最小化基于连续值(例如 0.43823)的误差。例如CatBoostClassifier
,分类器采用分类输入值(例如,0 或 1),这就是您所拥有的。在您的示例中,y
是:
0 1
1 0
2 0
3 0
4 0
5 0
6 1
这绝对是分类的,而不是连续的。
推荐阅读
- reactjs - 从 JSON react-native 获取特定对象
- javascript - 在 Vue JS 中获取数据属性作为对象:即使使用 JSON.stringify 也返回 [object object]
- c# - 用户定义类型中不支持的列数据类型
- ios - 表视图在首次启动 Swift 时未显示来自领域数据库的数据
- reporting-services - SSRS 报告描述字符限制
- google-sheets - 如何更改 arrayformula() 中 countif() 的范围?
- c++ - 如何将 jsoncpp 库包含到 unix 上的项目中?
- r - 未显示 ggplot 上的回归线
- python - 一步drawstyle plotly dash
- reactjs - 在反应上下文中需要帮助理解为什么每次提供者重新渲染时反应都会重新渲染所有消费者?