【问题标题】:Confusion Matrix with different colors不同颜色的混淆矩阵
【发布时间】:2022-01-02 22:35:53
【问题描述】:

我有问题。我创建了一个混淆矩阵,如下所示:

下面的代码就是这个:

cm = np.array([[2547,288],[ 255,216]])
fig, ax = plt.subplots(figsize=(12, 8))
ax = sns.heatmap(cm, annot=True, cmap='BuPu', fmt='g')

ax.set_title('Seaborn Confusion Matrix with labels\n\n');
ax.set_xlabel('\nPredicted Values')
ax.set_ylabel('Actual Values ');

## Ticket labels - List must be in alphabetical order
ax.xaxis.set_ticklabels(['True','False'])
ax.yaxis.set_ticklabels(['True','False'])

## Display the visualization of the Confusion Matrix.
plt.show()

这很可能很好,但我希望它看起来像这样有点不同:

如您所见,应该正确的颜色是绿色,其他颜色是红色,并且我想显示标签(真阳性、真阴性,...)。并且标签应该用于实际值和预测值以及负值和正值。如下图所示,1:1。

有没有办法可以添加标签并纠正 seaborn 中的颜色? 非常感谢您的帮助!

【问题讨论】:

  • 您确定要使用热图吗?您是否希望根据尺寸使红色/绿色变得动态和更暗/更亮?
  • 不,颜色不应该变暗或变亮,这些应该始终是相同的颜色。

标签: python matplotlib seaborn confusion-matrix


【解决方案1】:

您可以创建一个热图,其中一个单位矩阵作为数据,您想要的数字作为注释。使用仅由两种颜色(首先是 0 的颜色,然后是 1 的颜色)创建为调色板的颜色图。 Seaborn 会注意使用适当的文本颜色。

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

sns.set(style='white')
cm = np.array([[2547, 288], [255, 216]])
fig, ax = plt.subplots(figsize=(12, 8))
sns.heatmap(np.eye(2), annot=cm, fmt='g', annot_kws={'size': 50},
            cmap=sns.color_palette(['tomato', 'palegreen'], as_cmap=True), cbar=False,
            yticklabels=['True', 'False'], xticklabels=['True', 'False'], ax=ax)
ax.xaxis.tick_top()
ax.xaxis.set_label_position('top')
ax.tick_params(labelsize=20, length=0)

ax.set_title('Seaborn Confusion Matrix with labels', size=24, pad=20)
ax.set_xlabel('Predicted Values', size=20)
ax.set_ylabel('Actual Values', size=20)

additional_texts = ['(True Positive)', '(False Negative)', '(False Positive)', '(True Negative)']
for text_elt, additional_text in zip(ax.texts, additional_texts):
    ax.text(*text_elt.get_position(), '\n' + additional_text, color=text_elt.get_color(),
            ha='center', va='top', size=24)
plt.tight_layout()
plt.show()

【讨论】:

  • 非常感谢您的帮助。对此,我真的非常感激。是否可以选择在数字下方添加,例如2547 一个带有小文本的标签?
  • 谢谢。如上图颜色所示,数字下方有一些文字。所以我只想在数字下面写True Positive等等。
  • 非常感谢!! :) 我真的很感激。
  • 这是高手。
猜你喜欢
  • 2015-07-07
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-09
  • 2015-12-17
  • 2020-10-01
相关资源
最近更新 更多