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。

相关推荐
一碗白开水一5 分钟前
【图像处理】霍夫变换:霍夫变换原理、霍夫空间、霍夫直线、霍夫圆详解与代码示例
图像处理·人工智能·计算机视觉
赴3357 分钟前
逻辑回归算法基础介绍,简单的二分类三分类实例
人工智能·python·机器学习·逻辑回归·sklearn·分类算法
浪漫的诗人8 分钟前
病理WSI图像处理方法
图像处理·人工智能
天若有情67312 分钟前
【人工智能】当AI智能体遇上安全与伦理:一场技术与人性的对话
网络·人工智能·安全
MUTA️34 分钟前
视觉语言模型在视觉任务上的研究综述
人工智能·深度学习·语言模型·多模态
leaf_lucky44 分钟前
机器学习——互信息(超详细)
人工智能·机器学习
度假的小鱼44 分钟前
【源力觉醒 创作者计划】对比与实践:基于文心大模型 4.5 的 Ollama+CherryStudio 知识库搭建教程
人工智能·开源·文心大模型·知识库搭建
新加坡内哥谈技术1 小时前
谷歌正在美国测试一项基于机器学习的年龄识别技术
人工智能
图灵学术计算机论文辅导1 小时前
1+1>2!特征融合如何让目标检测更懂 “场景”?
论文阅读·人工智能·经验分享·考研·机器学习·计算机视觉·目标跟踪
NeoFii1 小时前
论文精读:Hallucination of Multimodal Large Language Model: A Survey
人工智能·多模态大模型·模型幻觉