遇见错误:ValueError: Classification metrics can‘t handle a mix of binary and continuous targets(代码

Posted _刘文凯_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了遇见错误:ValueError: Classification metrics can‘t handle a mix of binary and continuous targets(代码相关的知识,希望对你有一定的参考价值。

tensorflow 遇见错误ValueError: Classification metrics can’t handle a mix of binary and continuous targets keras 遇见错误:ValueError: Classification metrics can’t handle a mix of binary and continuous targets 使用sklearn中的函数 confusion_matrix、classification_report 或者 accuracy_score 或者计算TP\\FP\\TN\\FN出现错误



原因

这是因为sklearn函数的输入参数的数据类型不匹配导致的,有可能是输入的y_true为[0,1,1,0,1]的int型数据,而y_predict是[0.8,0.9,0.1,0.5]这样的概率数据。因此需要把概率数据转换为整型数据即可。可能使用了**model.predict_proba()**函数进行了预测

解决

方法一:
在预测时使用:

y_predict = model.predict_classes(x_test)  # 输出 [0,1,1,1]格式的数据
y_scores = model.predict_proba(x_test)# 输出[ 负的概率], 正的概率] 格式的数据 根据预测任务的不同而不同

model是训练的模型。
这种方法就是将预测值与预测概率分开。
注意! 这种方法对有些编码方式可能不适用,请尽量使用方法二!

方法二(推荐):
使用model.predict_proba()预测之后将结果转化为int类型的数据

y_scores = model.predict_proba(x_test)# 输出[ 负的概率], 正的概率] 格式的数据 
y_pred = y_socres[:,1] # 取第二列 正的概率,根据每个人的数据不同而不同!
y_pred = np.around(y_pred,0).astype(int) # .around()这个时四舍五入的函数 第二个参数0表示保留0位小数,也就只保留整数!! .astype(int) 将浮点数转化为int型

总结:
使用上面两种方法预测的结果,就可以直接中sklearn的包进行求精确度等各种数据了

以上是关于遇见错误:ValueError: Classification metrics can‘t handle a mix of binary and continuous targets(代码的主要内容,如果未能解决你的问题,请参考以下文章

ValueError:未知标签类型:SVM 中的“连续”错误

ValueError:int() 的无效文字,以 10 为底错误

ValueError:计算负 IRR 时的数学域错误

ValueError:熊猫数据框中的项目数量错误

打印出 ValueError 的实际错误消息

错误 **ValueError: 传递的项目数错误 2,位置暗示 1**