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。

相关推荐

  1. sklearn混淆矩阵计算seaborn

    2024-04-26 10:18:01       18 阅读
  2. 数据Seaborn

    2024-04-26 10:18:01       40 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-26 10:18:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-26 10:18:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-26 10:18:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-26 10:18:01       18 阅读

热门阅读

  1. springboot+Vue实现分页

    2024-04-26 10:18:01       12 阅读
  2. 相交链表的判断(leetcode)

    2024-04-26 10:18:01       10 阅读
  3. 探索 Chrome 插件开发之旅

    2024-04-26 10:18:01       16 阅读
  4. redis试题按知识点归类

    2024-04-26 10:18:01       11 阅读
  5. 力扣560. 和为 K 的子数组

    2024-04-26 10:18:01       10 阅读
  6. redis在实际项目作用

    2024-04-26 10:18:01       11 阅读
  7. leetcode 53 最大子数组和

    2024-04-26 10:18:01       10 阅读
  8. WebDriver库:实现对音频文件的自动下载与保存

    2024-04-26 10:18:01       14 阅读
  9. 自然语言处理(NLP)技术

    2024-04-26 10:18:01       13 阅读