# 008、模型评估:mAP、混淆矩阵——别让模型在测试集上“作弊”

张开发
2026/4/15 22:05:49 15 分钟阅读

分享文章

# 008、模型评估:mAP、混淆矩阵——别让模型在测试集上“作弊”
昨天深夜调试YOLO模型时遇到个诡异现象:训练时loss曲线完美下降,测试集准确率高达98%,结果实际部署到游戏画面里,检测框到处乱飞。打开测试集一看,冷汗下来了——原来测试集和训练集有80%的重合图片,模型只是在“背诵”答案。这个教训让我意识到,不搞懂评估指标,模型优化就是盲人摸象。## 混淆矩阵:模型到底错在哪里先看最基础的混淆矩阵,这玩意儿能告诉你模型具体怎么犯错的:```pythonfrom sklearn.metrics import confusion_matriximport seaborn as sns# 假设我们有这些预测和真实标签# 类别:0-背景,1-英雄,2-小兵,3-防御塔y_true = [1, 1, 2, 3, 1, 2, 2, 3]y_pred = [1, 2, 2, 3, 1, 2, 1, 3]cm = confusion_matrix(y_true, y_pred)print("混淆矩阵:")print(cm)# 输出:# [[0 0 0 0] # 背景类(我们的数据里没背景样本)# [2 1 0 0] # 真实为英雄:2个预测正确,1个预测成小兵# [1 1 2 0] # 真实为小兵:1个预测成英雄,1个预测正确,2个预测正确(这行显示有问题,实际要画图看)# [0 0 0 2]] # 防御塔全对```这里有个坑:混淆矩阵的行列顺序默认按类别数字排序。如果你的类别编号不是从0开始连续

更多文章