🔍 行:真实类别 · 列:预测类别
| ✧ 混淆矩阵 ✧ | ||
| 预测:正 | 预测:负 | |
| 真实:正 | TP 正确肯定 | FN 漏报 |
| 真实:负 | FP 误报 | TN 正确否定 |
# Python · sklearn 混淆矩阵示例
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
import matplotlib.pyplot as plt
y_true = [1, 0, 1, 1, 0, 1, 0, 0, 1, 0]
y_pred = [1, 0, 1, 0, 0, 1, 0, 1, 1, 0]
cm = confusion_matrix(y_true, y_pred)
print(cm)
# [[TN FP]
# [FN TP]]
disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=[0,1])
disp.plot(cmap='Blues', values_format='d')
plt.title('混淆矩阵可视化')
plt.show()
对于多分类,矩阵大小为 N×N (N个类别)。
# 多分类混淆矩阵示例 (sklearn)
from sklearn.metrics import confusion_matrix
y_true = ['猫', '狗', '兔', '猫', '狗', '兔', '猫', '猫']
y_pred = ['猫', '狗', '兔', '猫', '猫', '兔', '狗', '猫']
cm_multi = confusion_matrix(y_true, y_pred, labels=['猫','狗','兔'])
print(cm_multi)
# 可视化
import seaborn as sns
sns.heatmap(cm_multi, annot=True, fmt='d', cmap='YlOrRd',
xticklabels=['猫','狗','兔'], yticklabels=['猫','狗','兔'])
plt.title('多分类混淆矩阵热力图')
plt.show()
⬆️ 混淆矩阵提供精细反馈,驱动模型精准度提升