Matrice di confusione in sklearn

Nov 02 2020

Se guardi questo:

>>> y_true = ["cat", "ant", "cat", "cat", "ant", "bird"]
>>> y_pred = ["ant", "ant", "cat", "cat", "ant", "cat"]
>>> confusion_matrix(y_true, y_pred, labels=["ant", "bird", "cat"])
array([[2, 0, 0],
       [0, 0, 1],
       [1, 0, 2]])

Suppongo che la prima riga dell'array significhi "formica prevista" e la prima colonna è "in realtà è formica" la seconda colonna è "in realtà è uccello" ecc

Quindi la prima riga prima colonna 2 ho letto come "formica predetta, è formica", la prima riga seconda colonna 0 ho letto come "formica precitata è uccello" è 0 che si adatta e la terza colonna è "formica predetta è gatto" è 0 ma dovrebbe essere 1.

Cosa sto facendo di sbagliato mentre comprendo la matrice di confusione.

Un altro esempio è questo

>>> from sklearn.metrics import confusion_matrix
>>> y_true = [2, 0, 2, 2, 0, 1]
>>> y_pred = [0, 0, 2, 2, 0, 2]
>>> confusion_matrix(y_true, y_pred)
array([[2, 0, 0],
       [0, 0, 1],
       [1, 0, 2]])

Dove non è nemmeno chiaro, qual è l'ordine delle classi.

Fonte: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html

modifica : a meno che non venga scambiato. La prima riga è "è formica" non "formica prevista". Solo che su wikipedia il sistema è quella riga è la previsione.

Risposte

2 ShahriyarMammadli Nov 02 2020 at 00:30

Hai solo confuso il reale e il previsto. Ogni riga rappresenta i valori effettivi di elementi distinti nell'array e le colonne ne rappresentano i valori previsti. Questo è,

  • Prima riga: ci sono 2 formiche e 2 campioni sono previsti come formiche .
  • Seconda fila: ci sono 1 uccello e 1 campione è previsto come gatto .
  • Terza riga: ci sono 3 gatti , 1 campione è previsto come formica , 2 campioni sono previsti come gatto .