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

如何在scikit-learn生成的混淆矩阵单元格中添加自定义标注文本?

实现方法

不需要手动调用annotate指定坐标,scikit-learn的ConfusionMatrixDisplay实例自带text_属性,是和混淆矩阵维度一致的文本对象数组,直接修改每个位置的文本内容即可,操作非常简便。

适配你的场景的修改后代码

from sklearn import metrics
import matplotlib.pyplot as plt

# 此处请提前定义好你的y_true和y_pred变量
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
fig.tight_layout()

# 第一个混淆矩阵:benign为正例
cm_benign = metrics.ConfusionMatrixDisplay.from_predictions(
    y_true, y_pred, ax=ax1, labels=["benign", "malignant"], colorbar=False
)
ax1.set_title("Confusion Matrix (Benign as +)")
# 修改单元格标注,以下写法会保留原有的数值统计结果,不需要的话可以去掉f-string里的原有文本部分
cm_benign.text_[0,0].set_text(f"True Positive(真阳性)\n{cm_benign.text_[0,0].get_text()}")
cm_benign.text_[0,1].set_text(f"False Negative(假阴性)\n{cm_benign.text_[0,1].get_text()}")
cm_benign.text_[1,0].set_text(f"False Positive(假阳性)\n{cm_benign.text_[1,0].get_text()}")
cm_benign.text_[1,1].set_text(f"True Negative(真阴性)\n{cm_benign.text_[1,1].get_text()}")

# 第二个混淆矩阵:malignant为正例
cm_malignant = metrics.ConfusionMatrixDisplay.from_predictions(
    y_true, y_pred, ax=ax2, labels=["malignant", "benign"], colorbar=False
)
ax2.set_title("Confusion Matrix (Malignant as +)")
cm_malignant.text_[0,0].set_text(f"True Positive(真阳性)\n{cm_malignant.text_[0,0].get_text()}")
cm_malignant.text_[0,1].set_text(f"False Negative(假阴性)\n{cm_malignant.text_[0,1].get_text()}")
cm_malignant.text_[1,0].set_text(f"False Positive(假阳性)\n{cm_malignant.text_[1,0].get_text()}")
cm_malignant.text_[1,1].set_text(f"True Negative(真阴性)\n{cm_malignant.text_[1,1].get_text()}")

fig.subplots_adjust(wspace=0.8)
plt.show()

注意事项

  • text_属性在scikit-learn 0.24及以上版本可用,如果你的版本过低,先升级scikit-learn即可
  • 混淆矩阵默认行对应真实标签、列对应预测标签,修改标注前注意对应你设置的正负例顺序,避免标注填错位置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:36:04