Seaborn 热图混淆矩阵显示未按预期显示
Seaborn heatmap confusion matrix display not displaying as expected
请在混淆矩阵的热图显示上指导我。我尝试了不同的图大小但没有得到正确的 display.My 下面的代码和屏幕截图
def show_confusion_matrix(test_labels,predictions):
confusion=sk_metrics.confusion_matrix(np.argmax(test_labels,axis=1),np.argmax(predictions,axis=1))
confusion_normalized=confusion.astype('float')/confusion.sum(axis=1)
#confusion_normalized=confusion_matrix(np.argmax(y_test,axis=1),np.argmax(predictions,axis=1))
axis_labels=list(uniquelabel) ## unique labels has 120 dog breed names
fig,ax=plt.subplots(figsize=(30,70))
ax=sns.heatmap(confusion_normalized,xticklabels=axis_labels,yticklabels=axis_labels,
linewidths=0.10,cmap='Blues',annot=True,fmt='.2f',square=True)
plt.title('Confusion_matrix')
plt.ylabel("True Label")
plt.xlabel("Predicted Label")
show_confusion_matrix(y_test,predictions)
我发现的第一个问题是font-size
from seaborn import set
from seaborn import set_style
set(font_scale=1.8)
set_style("darkgrid")
或者您可以设置样式 whitegrid
你有很多特征,所以我建议你使用掩码来实现一个简单的方法。
from numpy import zeros_like
from numpy import triu_indices_from
mask = zeros_like(confusion_normalized)
mask[triu_indices_from(mask)] = True
您需要使用 confusion_normalized
,因为您要绘制归一化混淆矩阵。
from seaborn import axes_style
from matplotlib.pyplot import subplots
with axes_style("white"):
f, ax = subplots(figsize=(15, 15))
ax = heatmap(confusion_normalized,
annot=True,
mask=mask,
vmax=1,
vmin=0,
square=True,
cmap="YlGnBu",
linewidths=1.5,
annot_kws={"size": 18})
savefig('heatmap.png')
An Example output
请在混淆矩阵的热图显示上指导我。我尝试了不同的图大小但没有得到正确的 display.My 下面的代码和屏幕截图
def show_confusion_matrix(test_labels,predictions):
confusion=sk_metrics.confusion_matrix(np.argmax(test_labels,axis=1),np.argmax(predictions,axis=1))
confusion_normalized=confusion.astype('float')/confusion.sum(axis=1)
#confusion_normalized=confusion_matrix(np.argmax(y_test,axis=1),np.argmax(predictions,axis=1))
axis_labels=list(uniquelabel) ## unique labels has 120 dog breed names
fig,ax=plt.subplots(figsize=(30,70))
ax=sns.heatmap(confusion_normalized,xticklabels=axis_labels,yticklabels=axis_labels,
linewidths=0.10,cmap='Blues',annot=True,fmt='.2f',square=True)
plt.title('Confusion_matrix')
plt.ylabel("True Label")
plt.xlabel("Predicted Label")
show_confusion_matrix(y_test,predictions)
我发现的第一个问题是font-size
from seaborn import set
from seaborn import set_style
set(font_scale=1.8)
set_style("darkgrid")
或者您可以设置样式 whitegrid
你有很多特征,所以我建议你使用掩码来实现一个简单的方法。
from numpy import zeros_like
from numpy import triu_indices_from
mask = zeros_like(confusion_normalized)
mask[triu_indices_from(mask)] = True
您需要使用 confusion_normalized
,因为您要绘制归一化混淆矩阵。
from seaborn import axes_style
from matplotlib.pyplot import subplots
with axes_style("white"):
f, ax = subplots(figsize=(15, 15))
ax = heatmap(confusion_normalized,
annot=True,
mask=mask,
vmax=1,
vmin=0,
square=True,
cmap="YlGnBu",
linewidths=1.5,
annot_kws={"size": 18})
savefig('heatmap.png')
An Example output