es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo graficar una matriz de confusión 2×2 con predicciones en filas y valores reales en columnas?

Sé que podemos graficar una matriz de confusión con Sklearn usando el siguiente código de muestra.

from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
import matplotlib.pyplot as plt

y_true = [1, 0, 1, 1, 0, 1]
y_pred = [0, 0, 1, 1, 0, 1]

print(f'y_true: {y_true}')
print(f'y_pred: {y_pred}\n')

cm = confusion_matrix(y_true, y_pred, labels=[0, 1])
print(cm)
disp = ConfusionMatrixDisplay(confusion_matrix=cm)
disp.plot()
plt.show()

[Imagen de la matriz de confusión]

Lo que tenemos:

VN | FP
FN | VP

Pero quiero que la etiqueta de predicción se coloque en una fila o eje y, y la etiqueta de valor verdadero o real en una columna o eje x. ¿Cómo puedo graficar esto usando Python?

Lo que quiero:

VP | FP
FN | VN
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para trazar la matriz de confusión con las etiquetas predichas en el eje y y las etiquetas verdaderas en el eje x, puede modificar la función ConfusionMatrixDisplay configurando el parámetro display_labels en una lista de ['1', '0'] en lugar de [0, 1].

    Aquí está el código actualizado:

    from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
    import matplotlib.pyplot as plt
    
    y_true = [1, 0, 1, 1, 0, 1]
    y_pred = [0, 0, 1, 1, 0, 1]
    
    print(f'y_true: {y_true}')
    print(f'y_pred: {y_pred}\n')
    
    cm = confusion_matrix(y_true, y_pred, labels=[1, 0])
    print(cm)
    disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=['1', '0'])
    disp.plot()
    plt.show()
    

    Esto imprimirá una matriz de confusión con las etiquetas predichas en el eje y y las etiquetas verdaderas en el eje x, como esta:

         |   1     0 |
    -----|-----------|
       1 |   3     1 |
       0 |   0     2 |
    

    Donde:
    * TP está en la esquina superior izquierda (predicho 1, real 1)
    * FP está en la esquina superior derecha (predicho 0, real 1)
    * FN está en la esquina inferior izquierda (predicho 1, real 0)
    * TN está en la esquina inferior derecha (predicho 0, real 0)

Comments are closed.