Matriz de confusão em sklearn
Se você olhar para isto:
>>> 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]])
Suponho que a primeira linha da matriz significa "formiga prevista" e a primeira coluna é "realmente é formiga", a segunda coluna é "realmente é ave" etc.
Então, primeira linha, primeira coluna 2, li como "formiga prevista, é formiga", primeira linha, segunda coluna 0 li como "formiga precitada é pássaro" é 0 que se encaixa, e a terceira coluna é "formiga prevista é gato" é 0, mas deveria seja 1.
O que estou fazendo de errado ao compreender a matriz de confusão.
Outro exemplo é este
>>> 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]])
Onde não está nem claro, qual é a ordem das classes.
Fonte: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html
editar : a menos que seja trocado. A primeira linha é "é formiga" e não "formiga prevista". Só que na wikipedia o sistema é que a linha é a previsão.
Respostas
Você apenas confundiu o real e o previsto. Cada linha representa os valores reais de elementos distintos em sua matriz e as colunas representam os valores previstos deles. Isso é,
- Primeira linha: Existem 2 formigas e 2 amostras são previstas como formigas .
- Fila de segundos: há 1 pássaro e 1 amostra é considerada gato .
- Terceira linha: Existem 3 gatos , 1 amostra é prevista como formiga , 2 amostras são previstas como gato .