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:
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:
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.