Estoy usando la matriz de confusión para verificar el rendimiento de mi clasificador.
Estoy usando Scikit-Learn, estoy un poco confundido. ¿Cómo puedo interpretar el resultado de
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]])
¿Cómo puedo tomar la decisión de si estos valores pronosticados son buenos o no?
predictive-models
prediction
confusion-matrix
usuario3378649
fuente
fuente
Respuestas:
La matriz de confusión es una forma de tabular el número de clasificaciones erróneas, es decir, el número de clases predichas que terminaron en un contenedor de clasificación incorrecto basado en las clases verdaderas.
Si bien sklearn.metrics.confusion_matrix proporciona una matriz numérica, me resulta más útil generar un 'informe' usando lo siguiente:
lo que resulta en:
Esto nos permite ver que:
y_true
yy_pred
, de los subtotales "Todos"Este método también funciona para etiquetas de texto, y para una gran cantidad de muestras en el conjunto de datos se puede ampliar para proporcionar informes porcentuales.
La salida entonces es:
donde los números ahora representan el porcentaje (en lugar del número de casos) de los resultados que se clasificaron.
Aunque tenga en cuenta que la
sklearn.metrics.confusion_matrix
salida se puede visualizar directamente usando:fuente
AssertionError: arrays and names must have the same length
y_pred = pd.Series(...)
. Esto debería funcionar ahora.En el eje y, la matriz de confusión tiene los valores reales, y en el eje x los valores dados por el predictor. Por lo tanto, los recuentos en la diagonal son el número de predicciones correctas. Y los elementos de la diagonal son predicciones incorrectas.
En tu caso:
fuente
Me gustaría especificar gráficamente la necesidad de entender esto. Es una matriz simple que necesita ser bien entendida antes de llegar a conclusiones. Así que aquí hay una versión explicable simplificada de las respuestas anteriores.
fuente