La visualizzazione della matrice di confusione della mappa di calore Seaborn non viene visualizzata come previsto

Aug 19 2020

per favore guidami sulla visualizzazione della mappa di calore per la matrice di confusione Ho provato diverse dimensioni del fico ma non ho ottenuto una visualizzazione corretta Il mio codice qui sotto e la schermata

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)  

Risposte

Ahx Aug 19 2020 at 21:40

Il primo problema che ho riscontrato è la dimensione del carattere

from seaborn import set
from seaborn import set_style

set(font_scale=1.8)
set_style("darkgrid")

oppure puoi impostare lo stile whitegrid

Hai molte funzionalità, quindi ti consiglio di applicare la maschera per un approccio semplice.

from numpy import zeros_like
from numpy import triu_indices_from

mask = zeros_like(confusion_normalized)
mask[triu_indices_from(mask)] = True

È necessario utilizzare confusion_normalizedpoiché si desidera tracciare la matrice di confusione normalizzata.

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')

Un output di esempio