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。

相关推荐
qq_1249870753几秒前
基于Javaweb的《战舰世界》游戏百科信息系统(源码+论文+部署+安装)
java·vue.js·人工智能·spring boot·游戏·毕业设计·计算机毕业设计
Gavin在路上几秒前
SpringAIAlibaba之短期记忆与长期记忆实现原理(十一)
开发语言·人工智能
colus_SEU1 分钟前
【论文精读】Instance-Dependent Partial Label Learning
人工智能·深度学习·机器学习·pll·部分标签学习
小飞象—木兮3 分钟前
《电商运营分析手册》:定义、价值、产品规划与定价策略、指标体系与公式详解、电商运营框架、运营思维与经营复盘···(附相关材料下载)
大数据·人工智能·产品运营
Lethehong3 分钟前
一次 GLM-4.7 的 MaaS 接入实践:Dify 工作流搭建笔记
人工智能·蓝耘元生代·蓝耘maas
Cx330❀4 分钟前
深入理解 Linux 基础 IO:从 C 库到系统调用的完整剖析
linux·运维·服务器·c语言·数据库·人工智能·科技
jkyy20144 分钟前
赋能TOB端|以智能科技,筑牢糖尿病慢病精细化管理防线
大数据·人工智能·健康医疗
qwy7152292581639 分钟前
17-像素点和ROI操作
人工智能·opencv·计算机视觉
爱吃rabbit的mq12 分钟前
第13章:神经网络基础 - 感知机到多层网络
网络·人工智能·神经网络
茶栀(*´I`*)12 分钟前
OpenCV实战:从视频读写到高级目标追踪(MeanShift与CamShift详解)
图像处理·opencv·计算机视觉