我有個問題。我創建了一個混淆矩陣,如下所示:

下面的代碼是這樣的:
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中添加標簽并糾正顏色?非常感謝您的幫助!
uj5u.com熱心網友回復:
您可以使用單位矩陣作為資料創建一個熱圖,并將您想要的數字作為注釋。使用僅從兩種顏色(首先是 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()

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/367155.html
標籤:Python matplotlib 海生 混淆矩阵
