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

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非常详细(我知道我的模型准确率很低啦啊啊啊啊),而且不管是分类还是回归都可以调用这个方法。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2023年6月13日
下一篇 2023年6月13日

相关推荐