|
做完一个分类模型,在整理结果时,往往需要先看准确率,同时也需要明确模型把多少阳性样本漏判成了阴性,又把多少阴性样本误报成了阳性。这就是混淆矩阵的用武之地。

▲ 论文 Figure 3A、B:两个外部测试队列的混淆矩阵
论文例子
《PLOS Digital Health》论文“Artificial intelligence for evaluation of magnetic resonance imaging-detected extramural vascular invasion in rectal cancer”用 nnUNet 模型识别直肠癌 MRI 上的壁外血管侵犯(mrEMVI)。图中 A、B 对应两个外部测试队列,将 AI 预测与资深放射科医师小组的共识结果对照,准确率分别为 81.5% 和 84.7%。四类计数还能告诉我们,模型错在误报还是漏判。[1]
用一个例子看懂四个数
假设有 100 个样本,真实结果为 40 个阳性、60 个阴性。模型找对了 32 个阳性,漏掉 8 个;判对了 54 个阴性,又把 6 个阴性误报为阳性。把预测与真实结果逐个核对、计数,就得到以下混淆矩阵。
真实类别 / 预测类别 | 预测阳性 | 预测阴性 |
实际阳性 40 个 | TP=32 真阳性 | FN=8 假阴性(漏判) |
实际阴性 60 个 | FP=6 假阳性(误报) | TN=54 真阴性 |
TP 是 True Positive,TN 是 True Negative,表示阳性和阴性都判对了;FP 是 False Positive,FN 是 False Negative,分别表示误报和漏判。这四个数还能用来计算常见的模型评价指标:本例一共判对了 86 个样本,准确率为 86%;40 个实际阳性中找出了 32 个,召回率为 80%;38 个预测阳性中有 32 个确为阳性,精确率约为 84.2%。综合精确率和召回率,F1 分数约为 82.1%;60 个实际阴性中判对了 54 个,特异度为 90%。[2,4]
指标 | 回答什么问题 | 计算公式 | 本例计算与结果 |
准确率 Accuracy | 全部样本中,判对了多少例? | (TP+TN) / 总数 | (32+54) / 100 =86% |
召回率 Recall(敏感度) | 实际阳性中,找出了多少例? | TP / (TP+FN) | 32 / (32+8) =80% |
精确率 Precision(阳性预测值) | 预测为阳性的样本中,多少例是真的? | TP / (TP+FP) | 32 / (32+6) ≈84.2% |
特异度 Specificity | 实际阴性中,判对了多少例? | TN / (TN+FP) | 54 / (54+6) =90% |
F1 分数 | 综合考虑精确率和召回率,表现如何? | 2TP / (2TP+FP+FN) | (2×32) / (2×32+6+8) ≈82.1% |
F1 是精确率和召回率的调和平均数,其中一项偏低,F1 也会受到影响;它的计算不使用 TN。召回率和精确率的分母不同:前者从实际阳性出发,看有没有漏掉;后者从预测阳性出发,看报出的结果是否可靠。
多分类也能这样画吗?
可以,但要先选定一个类别。比如 A、B、C 三分类,原始混淆矩阵有 3 × 3=9 个数。把 A 当作阳性,把 B、C 合并为阴性,就能汇总出 A 类的 TP、FP、TN、FN;同理,三分类可得到三组计数,分别画成三张扇形图。[3]
不过,A 类图只能显示“有多少 A 被漏判”,看不出它们具体被分成了 B 还是 C。B 被错分成 C,在“是否为 A”的判断中也会计入 TN。因此,这种画法适合单独展示某一类的识别情况;想看完整的类别混淆关系,原始 3 × 3 矩阵更直观。
🛠️ 在线作图工具
https://www.bioinformatics.com.cn/two_catergory_confusion_matrix_quarters_plot

▲ 图 1:在线绘图页面
📋 五步完成混淆矩阵
Step 1:准备数据
点击图片上面的“示例数据”链接下载示例文件,用 Excel 打开。
示例文件在 Excel 中占 3 行 × 3 列,其中首行和首列是标签,真正的计数区为 2 × 2。Positive 表示阳性,Negative 表示阴性。按示例保留标签顺序,并核对 Actual(真实)与 Predicted(预测)对应的轴,避免把 FP 和 FN 放反。

▲ 图 2:示例数据
Step 2:输入检查(重要!)
点击“示例”按钮,示例数据会填入输入框。
真实数据请复制,粘贴到输入框。点击“输入检查”按钮,后台会逐行、逐列检查数据格式,并提示需要修改的地方。检查通过后再继续设置参数。

▲ 图 3:载入示例数据
如果检查未通过,按页面提示修改数据,然后重新检查,直到通过。

▲ 图 4:输入检查结果
Step 3:设置参数
输入检查通过后,进入参数设置。

▲ 图 5:绘图参数面板
【图片大小】图片宽度和高度控制图片画布大小。
【颜色】分别设置了小值和大值的颜色。
【字体设置】可分别设置轴说明文字(Positive、Negative)、图例标题、图例刻度数字、内圈数值及外圈类别的字号;字体可选 Times New Roman 或 Arial。
Step 4:提交出图
参数设置完成后,点击“提交”按钮,约1s后生成预览图。

▲ 图 6:预览图
Step 5:下载与后期编辑
平台提供 PDF、SVG、PNG 和 TIFF 格式下载。需要调整文字、字体或拼图时,可以使用 Adobe Illustrator 或 Inkscape 编辑 PDF 或 SVG。
✍️ 小结
读混淆矩阵,先看真实类别和预测类别,再看误报与漏判。二分类可以直接画成一张扇形图;多分类可按类别拆开画,但若想看清各类之间具体错分到了哪里,保留原始多分类混淆矩阵更直观。
📌 参数复用
预览图下方提供“复现参数(JSON)”下载链接。点击后可保存 JSON 文件,其中包含本次输入的数据和绘图设置。

▲ 图 7:下载参数文件
完成满意的版本后,建议把参数文件、图片和原始数据放在同一个文件夹中保存。下次作图时直接导入 JSON 文件,即可恢复数据和已设置的参数。

▲ 图 8:导入 JSON 文件,恢复数据和绘图设置
参考资料
[1] Huang H, et al. PLOS Digital Health, 2026, 5(10): e0001763. https://doi.org/10.1371/journal.pdig.0001763
[2] scikit-learn 官方文档 confusion_matrix:https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html
[3] scikit-learn 官方文档 multilabel_confusion_matrix(多分类按一对其余方式转换):https://scikit-learn.org/stable/modules/generated/sklearn.metrics.multilabel_confusion_matrix.html
[4] scikit-learn 官方文档 分类评价指标:https://scikit-learn.org/stable/modules/model_evaluation.html#classification-metrics
微生信助力高分文章,谷歌学术10000+
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2026-10-22 21:34
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社