ValueError: Classification metrics can‘t handle a mix of continuous-multioutput and multiclass targe

8 篇文章 1 订阅

1.问题描述:

使用scikit-learn的accuracy_score方法对logicRegression三分类模型预测准确率进行评估时报错:
ValueError: Classification metrics can't handle a mix of continuous-multioutput and multiclass targets
如图:
在这里插入图片描述
代码部分如下:

from sklearn.metrics import accuracy_score, recall_score
...
pred_test = log_model.predict(X_test)
# 下面是报错行
acu_test = accuracy_score(y_test, pred_test)  # 准确率
...

2.思考过程:

报错大致是说分类度量不能处理混合了连续多输出和多分类的目标。
我用的的确是三分类,但是其他模型也调用的这个评估方法,并没有报错,想来应该是和模型有关,查了一下果然是模型的问题。参考stackoverflow
stackoverflow一个回答解释了这个问题:

在这里插入图片描述

也就是说Accuracy是一个分类问题的度量方法,不能用于回归模型。
查看scikit-learn关于不同模型的评估应该调用的方法scikit-learn对不同metrics的评估方法描述可以看出对于Regression没有accuracy方法。
在这里插入图片描述
在这里插入图片描述

3.瞎胡分析

盲猜之所以Regression不能用Classification的评估方法的原因是,两种模型得到的预测结果数据类型不一样。对于分类模型来说,预测结果是标签中给定的离散值,一般来说是整数;而回归模型的预测结果一般是连续值,两者数据类型不同。

4.解决方法

scikit-learn给出的用于回归的这些方法都不符合我的要求,所以干脆采用metrics包里另外一个更便捷的:

from sklearn.metrics import classification_report
...
pred_test = log_model.predict(X_test)
print(classification_report(y_test,pred_test))
...

运行结果:report非常详细(我知道我的模型准确率很低啦啊啊啊啊),而且不管是分类还是回归都可以调用这个方法。
在这里插入图片描述

  • 10
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值