深度学习绘制混淆矩阵报Singleton array 1 cannot be considered a valid collection如何解决
报错原因
错误的核心是真实标签数组与预测标签数组的维度不匹配:
- 你的
Y_pred_classes是长度为16的一维数组,对应16个验证样本的预测分类结果 Y_true仅输出单个值1,是因为np.argmax(y_val,axis = 0)的轴参数设置错误:该操作会对所有验证样本的标签全局取最大值索引,仅返回单个值,不符合混淆矩阵要求的「每个样本对应一个真实标签」的输入规则,因此触发类型错误。
修复步骤
- 先确认验证集标签
y_val的存储格式:- 如果
y_val是one-hot编码的多分类标签,形状为(样本数, 类别数),将取argmax的轴改为axis=1即可,修改后代码:Y_true = np.argmax(y_val, axis=1) - 如果
y_val本身就是整数形式的分类标签,形状为(样本数,),不需要调用argmax,直接赋值即可:Y_true = y_val
- 如果
- (可选优化)混淆矩阵的计数为整数,可将热力图的格式参数改为
fmt='d',避免显示带小数的计数结果:sns.heatmap(confusion_mtx, annot=True, linewidths=0.01,cmap="Greens",linecolor="gray", fmt= 'd',ax=ax)
内容的提问来源于stack exchange,提问作者Jennie C.
相关产品推荐
相关产品推荐

