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

神经网络混淆矩阵绘图空行但打印非空的问题排查

混淆矩阵热力图空行问题解决方案

排查方向1:确认矩阵维度与数据完整性

先在绘图前打印矩阵的维度:

print(confusion_matrix.shape)

你提供的正常矩阵维度应为(3, 3),如果输出是(5, 3),说明代码中(尤其是添加总计行时)不小心插入了空行数据。检查拼接总计行/列的代码,确保是基于原矩阵的求和结果拼接,而非手动添加空数组。

排查方向2:重置绘图环境

之前的绘图缓存可能导致布局异常,在绘图代码开头添加:

import matplotlib.pyplot as plt
plt.clf()
plt.close('all')

清空残留的绘图状态后再重新绘制。

排查方向3:修正热力图参数

以下是经过验证的两种绘图代码,替换你的代码测试:

简化版热力图

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

cm = np.array([[28, 23, 51], [19, 104, 123], [47, 127, 174]])
plt.figure(figsize=(8, 6))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues',
            xticklabels=['类别0', '类别1', '类别2'],
            yticklabels=['类别0', '类别1', '类别2'])
plt.xlabel('预测类别')
plt.ylabel('真实类别')
plt.show()

带总计行/列的热力图

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

cm = np.array([[28, 23, 51], [19, 104, 123], [47, 127, 174]])
# 正确添加总计列
cm_with_col_total = np.hstack([cm, cm.sum(axis=1, keepdims=True)])
# 正确添加总计行
cm_with_total = np.vstack([cm_with_col_total, cm_with_col_total.sum(axis=0, keepdims=True)])

plt.figure(figsize=(9, 7))
sns.heatmap(cm_with_total, annot=True, fmt='d', cmap='Blues',
            xticklabels=['类别0', '类别1', '类别2', '总计'],
            yticklabels=['类别0', '类别1', '类别2', '总计'])
plt.xlabel('预测类别')
plt.ylabel('真实类别')
plt.show()

排查方向4:修复环境依赖问题

如果上述方法无效,尝试更新依赖库:

pip install --upgrade seaborn matplotlib

Jupyter Notebook用户可以重启内核后重新运行代码,清除环境缓存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 11:52:33