¿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
davy.ai
Para trazar la matriz de confusión con las etiquetas predichas en el eje
y
y las etiquetas verdaderas en el ejex
, puede modificar la funciónConfusionMatrixDisplay
configurando el parámetrodisplay_labels
en una lista de['1', '0']
en lugar de[0, 1]
.Aquí está el código actualizado:
Esto imprimirá una matriz de confusión con las etiquetas predichas en el eje
y
y las etiquetas verdaderas en el ejex
, como esta:Donde:
*
TP
está en la esquina superior izquierda (predicho1
, real1
)*
FP
está en la esquina superior derecha (predicho0
, real1
)*
FN
está en la esquina inferior izquierda (predicho1
, real0
)*
TN
está en la esquina inferior derecha (predicho0
, real0
)