Matriz de confusión en sklearn

Nov 02 2020

Si miras esto:

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

Supongo que la primera fila de la matriz significa "hormiga predicha" y la primera columna es "en realidad es una hormiga", la segunda columna es "en realidad es un pájaro", etc.

Así que la primera fila, la primera columna 2, leí como "hormiga predicha, es una hormiga", la primera fila, la segunda columna 0, leí como "la hormiga precitada es un pájaro" es 0, que encaja, y la tercera columna es "la hormiga predicha es un gato" es 0 pero ser 1.

Lo que estoy haciendo mal al comprender la matriz de confusión.

Otro ejemplo es 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]])

Donde ni siquiera está claro, cuál es el orden de clases.

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

editar : A menos que se intercambie. La primera fila es "es hormiga", no "hormiga predicha". Solo que en wikipedia el sistema es que la fila es la predicción.

Respuestas

2 ShahriyarMammadli Nov 02 2020 at 00:30

Simplemente confundiste lo real y lo predicho. Cada fila representa valores reales de elementos distintos en su matriz y las columnas representan valores predichos de ellos. Es decir,

  • Primera fila: hay 2 hormigas y se predice que 2 muestras serán hormigas .
  • Fila de segundos: Hay 1 ave y se predice 1 muestra como gato .
  • Tercera fila: Hay 3 gatos , 1 muestra se predice como hormiga , 2 muestras se predice como gato .