CNN文本分类模型混淆矩阵报错:无法处理二元与连续目标混合
解决confusion_matrix报错:ValueError: Classification metrics can't handle a mix of binary and continuous targets
问题根源
报错有两个核心原因:
- 模型预测输出是连续值(比如概率值),但
confusion_matrix要求输入必须是离散的类别标签(比如二分类的0/1) - 真实标签
y_test是一维数组(shape=(40,)),而预测结果predict是二维数组(shape=(40,1)),维度不匹配
解决步骤
1. 转换预测结果为类别标签 + 统一维度
根据任务类型处理:
- 二分类任务:以0.5为阈值,将概率转换为0/1标签,同时把二维数组压平成一维:
# 先把二维预测数组转为一维 predict = predict.flatten() # 按阈值生成类别标签 predict_labels = (predict > 0.5).astype(int)
- 多分类任务:取每个样本概率最大的类别索引,自动转为一维标签:
# 取概率最大的类别,输出为一维数组(40,) predict_labels = predict.argmax(axis=1)
2. 重新计算混淆矩阵
用转换后的标签和y_test计算:
from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_test, predict_labels)
验证维度
转换后predict_labels.shape应该和y_test.shape一致,都是(40,),此时就能正常生成混淆矩阵了。
内容的提问来源于stack exchange,提问作者Umer
相关产品推荐
相关产品推荐

