【问题标题】:Can't visualize plotted Confusion Matrix无法可视化绘制的混淆矩阵
【发布时间】:2021-10-01 13:45:26
【问题描述】:

我是 ML 新手,正在学习基础知识。 我正在研究 Dog-vision 数据集 (https://www.kaggle.com/c/dog-breed-identification),我正在尝试绘制一个混淆矩阵,但无法找到我做错的地方,需要帮助!

我的 true_label 是这样的

true_label[:10]
array([26, 96,  8, 15,  3, 10, 62, 82, 92, 16]

predicted_label 看起来像这样

predicted_l[:10]
array([26, 96,  8, 15,  3, 10, 62, 82, 92, 16]

它们几乎相同,但数组中的所有元素并不相同。

然后我将它们转换为熊猫数据框,代码如下

import pandas as pd
from sklearn.metrics import confusion_matrix
classes=[]
for i in range(0, 99):
  classes.append(i)

cf_matrix = confusion_matrix(true_l, predicted_l)
cf_matrix_df = pd.DataFrame(cf_matrix, index=classes,columns=classes)
cf_matrix_df

然后输出是这样的——

然后我尝试用这个数据框绘制 混淆矩阵 但它没有以正确的方式绘制。这是我的混淆矩阵的代码和输出:-

import seaborn as sns
figure = plt.figure(figsize=(8, 8))
sns.heatmap(cf_matrix_df, annot=True,cmap=plt.cm.Blues)
plt.tight_layout()
plt.ylabel('True label')
plt.xlabel('Predicted label')
plt.show()

输出

如果您需要更多信息,请在此处查看我的笔记本。 https://colab.research.google.com/drive/1SoXJJNTnGx39uZHizAut-HuMtKhQQolk?usp=sharing

【问题讨论】:

  • 请解释您要预测什么,您的问题到底是什么?我只能看到您有 2 个数组,并且您将它们绘制在热图中。我不知道你期望得到什么。
  • 我期待得到一个更直观的混淆矩阵!但我绘制的那个看起来不相关。通过 conf_matrix 我想​​看看我的模型做出了多少错误的预测,以及类似地有多少正确的预测。
  • 是的,它是分类模型。有 120 个类别是独特的狗品种
  • 尝试整合滚动条,增加图形大小/。
  • @Pygirl 谢谢你的建议,它帮助了我:)

标签: pandas tensorflow matplotlib google-colaboratory confusion-matrix


【解决方案1】:

您可以通过删除 annot=True 参数来使您的绘图更好,因为它会在每个单元格中写入数据值。只需删除此参数即可获得更好的可视化效果:

sns.heatmap(cf_matrix_df, cmap=plt.cm.Blues)

更新:增加图形大小figsize() 将有助于使可视化更清晰。

【讨论】:

  • 嘿,这个答案对我有帮助 :) 但请在你的答案中再添加一条语句 ===> 增加图形大小figsize() 将有助于使可视化更清晰。
猜你喜欢
  • 2016-01-31
  • 2017-10-17
  • 1970-01-01
  • 2016-06-04
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 2013-10-25
相关资源
最近更新 更多