You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

深度学习分类任务报错:分类指标无法处理二值与连续目标混合

报错原因

触发ValueError: Classification metrics can't handle a mix of binary and continuous targets的核心原因是:confusion_matrix等分类评估指标要求传入的预测值是离散类别标签,但你传入的y_pred是模型输出的0~1区间连续概率值,和0/1格式的离散真实标签类型不匹配。
从你贴的运行输出可以看到,y_pred是[0.00791603, 0.52200854, 0.53883666]这类浮点数概率,不是分类要求的0/1整数值,自然无法计算混淆矩阵。

修复方法

把连续概率值按照分类阈值转换为离散的0/1类别标签即可,二分类场景默认阈值为0.5:概率≥0.5判定为正类(标签1),<0.5判定为负类(标签0)。
替换原有计算混淆矩阵的代码为如下内容:

import numpy as np
from sklearn.metrics import confusion_matrix

y_pred = model.predict(seq_array, batch_size=200, verbose=1)
y_true = label_array

# 概率转二分类标签,同时把二维列向量压平为一维数组,避免维度不匹配报错
y_pred_label = (y_pred >= 0.5).astype(int).flatten()
y_true = y_true.flatten()

print('Confusion matrix\n- x-axis is true labels.\n- y-axis is predicted labels')
confusion_m = confusion_matrix(y_true, y_pred_label)
print(confusion_m)
补充说明
  • 0.5是通用阈值,你可以根据实际任务对精确率、召回率的要求灵活调整:如果需要降低漏判率就适当调低阈值,如果需要降低误报率就适当调高阈值。
  • 代码中加入.flatten()是因为你当前的y_pred和y_true都是shape为(样本数, 1)的二维列向量,部分sklearn版本对这种格式的标签输入也会抛出维度不匹配错误,压平为一维(样本数,)格式兼容性更好。
  • 如果后续做多分类任务,不需要用阈值切分,直接取概率最大的类别下标作为预测标签即可,对应转换代码为y_pred_label = np.argmax(y_pred, axis=1)。

内容的提问来源于stack exchange,提问作者yusuf hamzah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 23:48:50