sklearn混淆矩阵的计算和seaborn可视化

为了计算语义分割的指标miou,需要生成的中间过程就是混淆矩阵。

iou = intersection / union

每个类别的平均iou就是mean iou。

使用sklearn自带的confusion_matrix能很容易生成混淆矩阵,可以进行混淆矩阵的可视化观察哪个类别分割的不好。

复制代码
from sklearn.metrics import confusion_matrix

# 定义总的混淆矩阵
matrix = np.zeros((self.n, self.n), dtype=np.int64)

# 每个batch的数据都按照一下的方法添加进混淆矩阵:
# pred:  NxC
# label: N

pred_l = pred.max(dim=1)[1]
matrix += confusion_matrix(label.int().cpu().numpy(), pred_l.cpu().numpy(), labels=range(13))

一定要设置 labels=range(13),否则labels不全可能生成不了完整尺寸的混淆矩阵。

可以使用seaborn进行可视化。

复制代码
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt


sns.heatmap(data=matrix / np.sum(matrix, axis=0, keepdims=True), 
            annot=True,
            fmt=".2f", 
            xticklabels=class_name,
            cmap='GnBu')
plt.xticks(rotation=45, ha='right')
plt.ylabel('Pred')
plt.xlabel('True')
plt.title('Confusion Matrix')

plt.tight_layout()

plt.savefig("confusion.png")

matrix按照列进行求和,这样能够按照label值归一化到1。

相关推荐
liulanba14 小时前
机器学习评估指标详解 - 入门篇
人工智能·机器学习
wenzhangli714 小时前
2025智能家居创新大会:AI热潮下的冷思考,机遇窗口正在收窄
人工智能
棒棒的皮皮14 小时前
【OpenCV】Python图像处理之开/闭运算
图像处理·python·opencv·计算机视觉
Godspeed Zhao14 小时前
自动驾驶中的传感器技术80——Sensor Fusion(3)
人工智能·机器学习·自动驾驶
Niuguangshuo14 小时前
渐进式GAN (ProGAN):高分辨率图像生成的革命
人工智能·机器学习·生成对抗网络
张哈大14 小时前
免费薅国产旗舰 LLM!GLM-4.7+MiniMax-M2.1
人工智能·python
wheeldown14 小时前
AI Ping:大模型时代的“性能罗盘”——免费新上线GLM-4.7 与 MiniMax M2.1 实测
人工智能
大刘讲IT14 小时前
精准检索-数据交互-专业交付:2026企业AI落地的三维价值重构
人工智能·程序人生·重构·交互·创业创新·制造
后端小张14 小时前
【AI 学习】深度解析Transformer核心:注意力机制的原理、实现与应用
人工智能·深度学习·学习·机器学习·自然语言处理·数据挖掘·transformer
upper202014 小时前
图数据挖掘
人工智能·数据挖掘