遇见错误: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型

方法三(强烈推荐):
如果是在二分类任务中使用了one-hot编码,那么当 0 位置的概率 小于 1 位置的概率时 该值为 1 ,否则为0。如预测出来[0.6,0,8] 那么值为1,如预测出来[0.2,0,3] 值还是1,可如果以0.5为界限判断0、1显然是不合理的。因此使用以下代码更加合理:

yy_pred = model.predict(x_test, batch_size=b) # 预测出[[0.4,0.45],[0.8,0.3],[0.6,0.71]]
y_pred = np.argmax(yy_pred, axis=1) # 选择max值进行输出0,或1

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

  • 31
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
### 回答1: 这个错误是由于分类指标无法处理连续和二元目标混合而导致的。可能是你的目标变量中既包含连续型变量,又包含二元变量,而分类指标只能处理二元变量。需要检查数据集中的目标变量类型,如果有连续型变量,需要使用回归指标来评估模型性能。 ### 回答2: 这个错误信息是由于在进行分类指标评估时,出现了连续和二元目标变量混合的情况。分类评估指标是用于衡量分类模型预测结果和真实结果之间的差异,常用的指标包括准确率、召回率、F1值等。然而,这些指标只适用于二元分类问题,即目标变量只包含两个类别。如果目标变量是连续型的,例如回归问题中的预测值,那么这些指标就无法使用了,因为它们只能处理离散的二元变量。在这种情况下,应该使用回归指标来评估模型的性能,如均方误差、平均绝对误差等。 解决这个错误的方法很简单,只需要检查数据集中的目标变量是否正确。如果目标变量是连续型的,那么应该使用回归模型而不是分类模型。当然,除了目标变量之外,还需要检查其他特征的数据类型是否正确,以确保能够顺利地进行模型训练和评估。 总的来说,这个错误提醒我们在进行分类模型评估时要格外小心,确保输入的目标变量只包含离散的二元变量。如果发现目标变量是连续型的,那么应该使用回归模型进行处理,而不是使用分类模型。正确选择合适的评估指标是保证模型性能评估准确的关键。 ### 回答3: valueerror: classification metrics can't handle a mix of continuous and binary targets,这个错误通常出现在使用分类指标计算混合了连续变量和二进制目标变量的情况下。 在机器学习中,我们通常需要将数据集划分为输入和输出变量。输入变量是描述数据的属性,也称为特征或预测变量,而输出变量是你想预测的目标变量。当我们使用分类指标评估分类模型的性能时,我们需要将目标变量离散化为二进制类别,即1或0。例如,研究癌症患者生存率时,我们将目标变量分为生存和死亡两个类别。在这种情况下,我们使用分类指标,例如精确度,召回率,F1分数等来评估预测模型的性能。 然而,当目标变量既包含连续值又包含二进制类别时,就会出现这个错误。例如,我们有一个数据集,其中目标变量是一个人的年龄,而特征变量是性别,职业和收入水平。在这个例子中,年龄是一个连续的值,并不是一个二进制的类标签,所以我们不能将它用于分类指标计算中。这将导致计算错误,并且会报出“classification metrics can't handle a mix of continuous and binary targets”的错误。 为了解决这个问题,我们需要使用回归模型来处理连续目标变量。在这个例子中,我们可以使用线性回归模型或决策树回归模型来预测一个人的年龄,并使用回归指标,例如均方误差或R平方等来评估模型的性能。如果目标变量是二进制的,而特征变量是连续的,我们可以使用逻辑回归模型来预测二进制变量,并使用分类指标来评估模型的性能。 总之,“classification metrics can't handle a mix of continuous and binary targets”是因为我们试图将连续值与二进制类别混合在一起用于分类指标的计算中,解决这个问题需要使用合适的模型来预测响应变量并使用适当的评估指标来评估模型的性能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_刘文凯_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值