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

如何放大sklearn混淆矩阵的轴比例(非仅画布)适配多类别?

解决Sklearn混淆矩阵放大后仅画布变大的问题

我太懂这种烦恼了!20个类别的时候,光调figsize只会让画布空落落的,矩阵本身还是挤得看不清标签和数值。给你两个亲测有效的方案,直接解决这个问题:

方案1:用Seaborn热力图绘制(推荐)

Seaborn的heatmap比sklearn自带的绘图工具灵活得多,能单独控制矩阵元素、标签的大小,完美适配多类别场景:

import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.metrics import confusion_matrix

# 替换成你的真实标签和预测结果
y_true = [你的真实标签列表]
y_pred = [你的预测结果列表]
class_labels = [f"类别{i}" for i in range(20)]  # 替换成你的实际类别名称

# 生成混淆矩阵
cm = confusion_matrix(y_true, y_pred)

# 设置足够大的画布(20个类别建议(15,12),可按需调整)
plt.figure(figsize=(15, 12))

# 绘制混淆矩阵,重点调整这几个参数:
sns.heatmap(cm, 
            annot=True,        # 显示每个格子的数值
            fmt='d',           # 数值格式(整数)
            cmap='Blues',      # 配色方案
            xticklabels=class_labels, 
            yticklabels=class_labels,
            annot_kws={"size": 11},  # 控制数值的字体大小
            linewidths=0.5)    # 格子间的分隔线,让矩阵更清晰

# 调整坐标轴和标题的字体大小
plt.xlabel('预测类别', fontsize=13)
plt.ylabel('真实类别', fontsize=13)
plt.title('混淆矩阵', fontsize=15)

# 自动调整布局,防止标签被截断
plt.tight_layout()
plt.show()

方案2:用Sklearn官方的ConfusionMatrixDisplay

如果习惯用sklearn自带的工具,新版本可以用ConfusionMatrixDisplay,通过指定绘图轴来精准控制元素大小:

import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay

y_true = [你的真实标签列表]
y_pred = [你的预测结果列表]
class_labels = [f"类别{i}" for i in range(20)]

cm = confusion_matrix(y_true, y_pred)

# 创建画布和轴对象,设置合适的尺寸
fig, ax = plt.subplots(figsize=(15, 12))

# 初始化并绘制混淆矩阵
disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=class_labels)
disp.plot(
    ax=ax,
    cmap='Blues',
    values_format='d',
    xticks_rotation=45,  # 旋转x轴标签,避免重叠
    fontsize=11          # 控制标签和数值的字体大小
)

# 同样用tight_layout优化布局
plt.tight_layout()
plt.show()

关键注意事项:

  • 画布尺寸要匹配类别数:20个类别别用太小的figsize,建议宽度≥12,高度≥10,根据标签长度再调整;
  • 单独控制字体大小:不管用哪种方法,一定要显式设置fontsize或annot_kws,不然默认字体太小,放大画布也没用;
  • 旋转标签:如果类别名称较长,给x轴标签加个旋转(比如45度或垂直),防止重叠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:56:28