Matrice di confusione in sklearn
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
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 .