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.

Matriz de Confusión con diferentes colores

Tengo un problema. He creado una matriz de confusión que se ve así:

cm = np.array([[2547,288],[ 255,216]])
fig, ax = plt.subplots(figsize=(12, 8))
ax = sns.heatmap(cm, annot=True, cmap='BuPu', fmt='g')

ax.set_title('Matriz de confusión de Seaborn con etiquetas\n\n');
ax.set_xlabel('\nValores Predichos')
ax.set_ylabel('Valores Reales ');

Etiquetas de los billetes – La lista debe estar en orden alfabético

ax.xaxis.set_ticklabels(['Verdadero','Falso'])
ax.yaxis.set_ticklabels(['Verdadero','Falso'])

Mostrar visualización de la matriz de confusión.

plt.show()

Este código es probablemente correcto, pero quiero que se vea un poco diferente así:

Como puede ver, los colores que deberían ser correctos son verdes y los demás rojos y también quiero mostrar las etiquetas (verdadero positivo, verdadero negativo, …). Y una etiqueta debería ser para los valores reales y predichos y para los valores negativos y positivos. Así que 1:1 como se puede ver en la foto a continuación.

¿Hay alguna manera de agregar etiquetas y corregir los colores en seaborn? ¡Muchas gracias por su ayuda!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de agregar etiquetas y cambiar el esquema de colores en seaborn. Puedes agregar etiquetas personalizadas usando el parámetro annot en la función sns.heatmap(). Para cambiar los colores, puedes crear un mapa de colores personalizado utilizando la función ListedColormap() del módulo matplotlib.colors.

    Aquí te mostramos cómo puedes modificar el código existente para lograr el resultado deseado:

    import numpy as np
    import matplotlib.pyplot as plt
    import seaborn as sns
    from matplotlib.colors import ListedColormap
    
    # Define la matriz de confusión.
    cm = np.array([[2547, 288], [255, 216]])
    
    # Define el mapa de colores.
    cmap = ListedColormap(['#FF4136', '#2ECC40'])
    
    # Define las etiquetas.
    labels = [['Verdadero Positivo', 'Falso Negativo'], 
              ['Falso Positivo', 'Verdadero Negativo']]
    
    # Dibuja la matriz de confusión con colores y etiquetas personalizadas.
    fig, ax = plt.subplots(figsize=(8, 6))
    sns.heatmap(cm, annot=True, fmt='g', cmap=cmap, square=True,
                xticklabels=['Predicho Falso', 'Predicho Verdadero'],
                yticklabels=['Actual Falso', 'Actual Verdadero'], ax=ax)
    
    # Agrega las etiquetas al gráfico.
    for i in range(len(labels)):
        for j in range(len(labels)):
            text = ax.text(j+0.5, i+0.5, labels[i][j],
                           ha='center', va='center', color='black')
    
    # Agrega un título al gráfico.
    plt.title('Matriz de confusión personalizada de Seaborn')
    
    # Muestra el gráfico.
    plt.show()
    

    Este código produce una matriz de confusión que se parece a la segunda imagen que proporcionaste.

    Ten en cuenta que en el código anterior, definimos un mapa de colores personalizado utilizando la función ListedColormap(). Pasamos una lista de dos colores a esta función, uno para las predicciones correctas y otro para las incorrectas. También definimos una lista de etiquetas para las diferentes celdas en la matriz de confusión, que agregamos al gráfico utilizando la función text().

    También hicimos algunos otros cambios en el gráfico, como hacerlo cuadrado y cambiar el tamaño de la figura. Puedes modificar estos parámetros según sea necesario para obtener el resultado deseado.

Comments are closed.