多分类任务生成混淆矩阵报错:多类别与连续多输出目标不兼容
问题解决:多分类任务混淆矩阵生成错误
错误原因
你的模型输出pred是12类的概率分布(形状(486, 12)),而真实标签y_val是单类别整数标签(形状(486,))。sklearn的分类指标要求输入的预测值和真实值必须是同类型的类别标签,不能混合概率分布和整数标签,因此触发ValueError。
解决步骤
将模型输出的概率分布转换为对应的类别标签(取每个样本概率最大的类别索引),再传入混淆矩阵函数:
修正后的代码
from sklearn.metrics import confusion_matrix import numpy as np # 获取模型预测的概率分布 pred_probs = model_BiLSTM.predict(X_val) # 将概率转换为类别标签(取每个样本概率最大的类) pred_labels = np.argmax(pred_probs, axis=1) # 生成混淆矩阵 y_unique = np.unique(y_val) cm = confusion_matrix(y_val, pred_labels, labels=y_unique)
关键说明
np.argmax(pred_probs, axis=1):对每个样本(axis=1表示沿类别维度)取概率最大值对应的索引,得到形状为(486,)的整数标签数组,和y_val格式完全匹配。- 你的模型使用
SparseCategoricalCrossentropy损失,说明真实标签采用稀疏整数格式,这种转换方式完全符合模型的输出逻辑。
内容的提问来源于stack exchange,提问作者Teo7
相关产品推荐
相关产品推荐

