ValueError: Classification metrics can‘t handle a mix of continuous-multioutput and multiclass targe
Posted cx元
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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非常详细(我知道我的模型准确率很低啦啊啊啊啊),而且不管是分类还是回归都可以调用这个方法。
ValueError(“找到数量不一致的输入变量” ValueError:找到样本数量不一致的输入变量:[10725, 3575]
【中文标题】ValueError(“找到数量不一致的输入变量” ValueError:找到样本数量不一致的输入变量:[10725, 3575]【英文标题】:ValueError("Found input variables with inconsistent numbers of" ValueError: Found input variables with inconsistent numbers of samples: [10725, 3575] 【发布时间】:2021-02-17 02:23:03 【问题描述】:我已经被这个错误困扰了很长一段时间。每当我运行此代码时,都会出现以下错误:
raise ValueError("Found input variables with inconsistent numbers of "ValueError: Found input variables with inconsistent numbers of samples: [10725, 3575]
这是我的代码 sn-p:
n_classes = len(classes)
X_train, X_test, y_train, y_test = train_test_split(X, Y, random_state=0, test_size = 0.75)
X_train_scale = X_train/255.0
X_test_scale = X_test/255.0
【问题讨论】:
【参考方案1】:您收到此错误是因为 train_test_split 要求 X 和 Y 必须具有相同的长度,而这里的情况并非如此。事实上:X.shape[0] == 10725
而Y.shape[0] == 3575
要解决这个问题,你必须重塑你的 X。这是我的建议:X.reshape(Y.shape[0], -1)
【讨论】:
以上是关于ValueError: Classification metrics can‘t handle a mix of continuous-multioutput and multiclass targe的主要内容,如果未能解决你的问题,请参考以下文章
如何解决 raise ValueError("columns must have matching element counts") ValueError: columns mus