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。

相关推荐
weixin_505154464 分钟前
在浏览器实现3D效果,有最优雅的解决方案吗?
人工智能·3d·数字孪生·3d产品配置器·3d交互展示·3d数字资产
serve the people6 分钟前
tensorflow tf.function 的两种执行模式(计算图执行 vs Eager 执行)的关键差异
人工智能·python·tensorflow
Web3_Daisy7 分钟前
以太坊代币教程:如何添加 Logo 并更新 Token 信息?
大数据·人工智能·web3·区块链·比特币
V1ncent Chen13 分钟前
人工智能的基石之一:算法
人工智能·算法
serve the people13 分钟前
tensorflow中的计算图是什么
人工智能·python·tensorflow
子午13 分钟前
【动物识别系统】Python+TensorFlow+Django+人工智能+深度学习+卷积神经网络算法
人工智能·python·深度学习
软件算法开发16 分钟前
基于跳蛛优化的LSTM深度学习网络模型(JSOA-LSTM)的一维时间序列预测算法matlab仿真
深度学习·matlab·lstm·一维时间序列预测·跳蛛优化·jsoa-lstm
谷玉树19 分钟前
框架分类与选型:一种清晰的三层分类法
人工智能·pytorch·机器学习·架构·django·前端框架
张彦峰ZYF19 分钟前
AI赋能原则2解读思考:从权威到机制-AI 时代的分层式信任体系
人工智能·ai·aigc
小程故事多_8022 分钟前
从固定流程到主动思考,LangGraph 重构智能体 RAG,医疗问答多步推理能力爆发
人工智能·重构·aigc