Las matrices son una forma habitual de representar las relaciones y patrones existentes dentro de los conjuntos de datos. Como puede ser el caso de las matrices de correlación, matrices de confusión o tablas pivote (pivot table). Por un lado, las matrices de correlación muestran la correlación que existe entre pares de datos. Las matrices de confusión se utilizan comúnmente en problemas de clasificación para evaluar el rendimiento de un modelo. Mientras que una tabla pivote es una forma de resumir y organizar datos en una estructura tabular, donde las filas y columnas representan variables y los valores de las celdas representan agregaciones de datos. Por eso existen diferentes herramientas para la visualización de matrices en Seaborn, una de las bibliotecas más populares en Python para la creación de gráficos. En esta entrada se verán dos herramientas básicas: los mapas de calor y los dendrogramas.
Mapas de calor
Un mapa de calor (heatmap) es una representación visual de los datos de una matriz. En estos gráficos, cada celda de la matriz se colorea según su valor numérico correspondiente. Los colores utilizados en el mapa de calor representan una escala de valores, asignando un color específico a cada rango de valores. Por lo general, se utiliza una paleta de colores, como el gradiente de colores desde tonos más fríos (como azules) a tonos más cálidos (como rojos), para indicar los valores bajos y altos respectivamente. Por los que son especialmente indicados para mostrar la distribución y las variaciones de los valores a lo largo de dos dimensiones, como filas y columnas.
La función de Seaborn con la que se pueden crear mapas de calor es heatmap()
. Su uso es extremadamente sencillo, solamente se debe importar Seaborn y usar la función con una matriz como se muestra a continuación.
import seaborn as sns import matplotlib.pyplot as plt # Cargar el conjunto de datos "flights" de Seaborn data = sns.load_dataset("flights") # Creación de una tabla pivote a partir de los datos data_matrix = data.pivot(index="month", columns="year", values="passengers") # Crear un mapa de calor sns.heatmap(data_matrix) # Mostrar el mapa de calor plt.show()
En este ejemplo se ha importado el conjunto de datos flights de Seaborn, un conjunto de datos que contiene la información sobre el número de pasajeros que viajaban en una línea aérea durante diferentes meses y años. Posteriormente, se usa la función pivot()
de Pandas para crear una tabla pivote donde las filas representan los meses, las columnas representan los años y los valores de las celdas son el número de pasajeros. Finalmente se crea una mapa de calor con la función heatmap()
para esta tabla.
En el mapa de calor se pude ver a la derecha la escala de colores, los tonos oscuros indica una menor presencia de viajeros, mientras que los claros una mayor. Esto permite ver de forma fácil que la mayor cantidad de viajeros se produce en julio de 1960.
Cambiar la paleta del mapa de calor
La paleta de colores utilizada para crear el mapa de calor a partir de las matrices en Seaborn se puede configurar. Para lo que se deben usar la propiedad cmap
. A continuación, se muestra la misma gráfica que antes pero con "coolwarm"
, una paleta en la que se usan colores azules para los valores bajos y rojos para los altos.
# Crear un mapa de calor sns.heatmap(data_matrix, cmap="coolwarm") # Mostrar el mapa de calor plt.show()
Incluir los valores en el mapa de calor
Otra opción de la función heatmap()
que puede ser interesante es la posibilidad de incluir los valores de la matriz. Algo que puede ser necesario en matrices de correlación o matrices de confusión. Para que se muestran los valores en el mapa de calor solamente se debe asignar el valor verdadero a la propiedad annot
de la función. Lo que se muestra en el siguiente ejemplo.
# Cargar el conjunto de datos "tips" de Seaborn data = sns.load_dataset("tips") # Creación de la matriz de correlación data_matrix = data.corr(numeric_only=True) # Crear un mapa de calor sns.heatmap(data_matrix, cmap="coolwarm", annot=True) # Mostrar el mapa de calor plt.show()
En este ejemplo, se ha importado el conjunto de datos tips, un conjunto que contiene los datos de propinas registradas en un restaurante en función de diferentes datos. Para los valores numéricos del conjunto de datos se calcula la matriz de correlación mediante el método corr()
de Pandas. Finalmente se crea el mapa de calor con la opción annot
igual a True
.
Dendrogramas:
Los dendrogramas son diagramas de árbol que muestran las relaciones jerárquicas entre un conjunto de objetos. En Seaborn la función que permite crear estos diagramas a partir de una matriz es clustermap()
. Siendo su uso básico bastante sencillo.
# Cargar el conjunto de datos "tips" de Seaborn data = sns.load_dataset("tips") # Eliminación de las columnas categóricas data_matrix = data.drop(["sex", "smoker", "day", "time"], axis=1) # Crear un dendrograma sns.clustermap(data_matrix, cmap="viridis") # Mostrar el dendrograma plt.show()
En este ejemplo, se vuelve a importar el conjunto de datos tips de Seaborn. Posteriormente se eliminan las columnas categóricas “sex”, “smoker”, “day” y “time” del conjunto de datos, ya que se desea realizar un análisis de agrupamiento usando solamente las variables numéricas. A continuación, mediante la función clustermap()
de Seaborn se crea un dendrograma a partir de la matriz. El dendrograma muestra cómo los objetos se agrupan en función a sus similitudes.
Conclusiones
Representar matrices de forma visual es una excelente opción para explorar relaciones y patrones dentro de los conjuntos de datos. La visualización de matrices en Seaborn se puede conseguir mediante las funciones que ofrece para la creación de mapas de calor y dendrogramas.
Deja una respuesta