混淆矩阵与归一化混淆矩阵图看不懂
时间: 2025-04-28 13:24:43 浏览: 49
### 混淆矩阵与归一化混淆矩阵
#### 定义与区别
混淆矩阵是一种特定的表格布局,用于展示分类模型性能的结果。它通过比较预测标签和实际标签之间的关系来评估机器学习算法的表现[^4]。
对于多类别分类问题,假设存在N个不同的类,则混淆矩阵是一个N×N大小的矩阵,在这个矩阵中:
- 行代表真实类别;
- 列代表预测类别;
- 对角线上的数值表示被正确分类的数据点数量;而非对角线元素则显示错误分类的情况。
而归一化混淆矩阵则是基于原始混淆矩阵计算得到的一种形式,其中每个单元格中的值不再是绝对计数而是相对比例或者概率。具体来说,可以通过按照行求和的方式将每一行的比例标准化到1之间,这样做的好处是可以消除不同类别样本量差异带来的影响,使得各个类别的表现更加直观可比[^5]。
#### 图形解读
当观察混淆矩阵图时,应该注意以下几个方面:
- **颜色深浅**:通常情况下,热力图的颜色越深意味着该位置对应的频次越高。因此,理想状态下主对角线上会呈现出较深的颜色,表明大部分实例都被准确地分配到了各自的真正所属类别之中。
- **偏离程度**:如果某些非对角元具有较高的频率(即颜色也相对较深),这说明这些地方发生了较多误判现象。此时可以根据具体的业务需求进一步分析原因所在,并考虑调整模型结构或特征工程策略以改善效果。
至于归一化的版本,除了上述两点之外还需要额外关注每行总和是否接近于单位长度(1),因为这是衡量归一化过程成功与否的重要标志之一。另外,由于经过了规范化处理之后,即使各类别间原本存在着显著的数量级差距也能在同一尺度下公平对比,所以更有利于发现潜在模式或异常情况。
```python
import seaborn as sns
import numpy as np
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
# 假设y_true为真实的标签列表,y_pred为预测后的标签列表
cm = confusion_matrix(y_true, y_pred)
# 绘制未归一化的混淆矩阵
disp = ConfusionMatrixDisplay(confusion_matrix=cm)
disp.plot()
# 归一化操作
cm_normalized = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
# 绘制归一化的混淆矩阵
disp_norm = ConfusionMatrixDisplay(confusion_matrix=cm_normalized)
disp_norm.plot()
```
阅读全文
相关推荐

















