Diagrama de matriz de confusión Seaborn

Ammar Ali 18 abril 2022
Diagrama de matriz de confusión Seaborn

Este tutorial discutirá el trazado del array de confusión utilizando la función mapde calor () de Seaborn en Python.

Trazado del array de confusión usando Seaborn

En un problema de clasificación, el resumen de los resultados de la predicción se almacena dentro de un array de confusión. Tenemos que trazar la matriz de confusión para ver el recuento de predicciones correctas e incorrectas.

Para trazar un array de confusión, tenemos que crear un dataframe del array de confusión, y luego podemos usar la función heatmap() de Seaborn para trazar la matriz de confusión en Python. Por ejemplo, creemos un array de confusión aleatoria y grafiquémosla usando la función heatmap(). Vea el código a continuación.

import seaborn as snNew
import pandas as pdNew
import matplotlib.pyplot as pltNew

array = [
    [11, 1, 0, 2, 0],
    [3, 8, 0, 1, 0],
    [0, 16, 3, 0, 0],
    [0, 0, 12, 0, 0],
    [0, 0, 0, 13, 0],
    [0, 1, 0, 0, 16],
]

DetaFrame_cm = pdNew.DataFrame(array, range(6), range(5))
snNew.heatmap(DetaFrame_cm, annot=True)
pltNew.show()

Producción:

gráfico de matriz de confusión

Para crear el dataframe del array de confusión, usamos la función DataFrame() de la biblioteca pandas. Para crear el dataframe, tenemos que pasar la matriz, el número de filas y el número de columnas.

El segundo argumento dentro de la función heatmap() se usa para mostrar los valores del array de confusión en el gráfico. Si no usamos el segundo argumento, annot, los valores del array no serán visibles y solo veremos los colores.

Podemos cambiar el mapa de colores de la trama a cualquier mapa de colores compatible con funciones como invierno, verano, frío, cobre y calor. También podemos desactivar la barra de color que se muestra en el lado derecho de la gráfica usando el argumento cbar y estableciéndolo en falso.

También podemos especificar el ancho y el color de la línea alrededor de cada celda usando el parámetro linewidths y linecolor. Podemos usar cualquier valor de punto flotante para establecer el valor del ancho de línea. Podemos usar el nombre del color o la primera letra del color para establecer el valor del color de la línea.

Podemos establecer cada forma de celda en cuadrado usando el argumento cuadrado y estableciéndolo en verdadero. También podemos establecer las etiquetas de marca de cada eje usando xticklabels para las etiquetas de marca del eje x y yticklabels para las etiquetas de marca del eje y.

Podemos establecer el argumento de la etiqueta de marca en una lista del mismo tamaño que las celdas del eje x. Por ejemplo, cambiemos los argumentos mencionados anteriormente. Vea el código a continuación.

import seaborn as snNew
import pandas as pdNew
import matplotlib.pyplot as pltNew

array = [
    [11, 1, 0, 2, 0],
    [3, 8, 0, 1, 0],
    [0, 16, 3, 0, 0],
    [0, 0, 12, 0, 0],
    [0, 0, 0, 13, 0],
    [0, 1, 0, 0, 16],
]

DetaFrame_cm = pdNew.DataFrame(array, range(6), range(5))
snNew.heatmap(
    DetaFrame_cm,
    annot=True,
    cmap="summer",
    cbar=False,
    linewidths=3,
    linecolor="r",
    square=True,
    xticklabels=["a", "b", "c", "d", "e"],
)
pltNew.show()

Producción:

parámetro cambiante de la gráfica de matriz de confusión

También podemos establecer el tamaño de fuente de las etiquetas de ticks de ambos ejes usando la función set() de Seaborn. Podemos establecer el valor de la fuente en cualquier número de punto flotante usando el parámetro font_scale dentro de la función set(). Por ejemplo, para establecer el tamaño de fuente del gráfico anterior, podemos usar el código a continuación.

snNew.set(font_scale=1.9)

Si queremos disminuir el tamaño de la fuente, tenemos que usar un valor de menos de uno.

Autor: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Artículo relacionado - Seaborn Plot