sábado, 28 de noviembre de 2020

Visualizar datos de Machine Learning con la librería matplotlib de Python


En este post vamos a ver algunas formas de visualización. En nuestro caso visualizaremos los datos de temperaturas del observatorio del Retiro en Madrid. La librería matplotlib contiene una amplia variedad de herramientas para el visualizado de datos, es muy sencillo generar gráficos de líneas, de puntos o histogramas. In particular, vamos a utilizar el módulo matplotlib.pyplot porque es el de uso más sencillo, pyplot permite generar visualizaciones paso a paso. 

from matplotlib import pyplot as plt
años = [2010, 2011, 2012, 2013, 2014, 2015, 2016]
temperatura_media = [14.71, 16.04, 15.51, 15.03, 16.07, 16.60, 16.04]
# crea un gráfico lineal , años en el eje x y tempertura en el y
plt.plot(años, temperatura_media, color='green', marker='o', linestyle='solid')
# añadimos un título
plt.title("Temperatura media Madrid-Retiro")
# añadimos una etiqueta al eje y
plt.ylabel("Grados centígrados ºC")
plt.show()


Visualizar datos de Machine Learning con la librería matplotlib de Python


Para hacer un histrograma hacemos lo siguiente.


años = ["2015", "2016", "2017", "2018", "2019"]
temp_enero = [6.2, 8.4, 6.9, 7.2, 6.5]
# las barras tienen por defecto una anchura de 0,8 de mod que le añadiremos 0,5 para centrar las barras
xs = [i + 0.5 for i, _ in enumerate(años)]
# muestra el histograma con los años en la x y la temperatura en la y
plt.bar(xs, temp_enero)
plt.ylabel("# Madrid-Retiro")
plt.title("Temperaturas medias de Enero")
# ponemos las etiquetas en cada barra  del eje x del histograma
plt.xticks([i + 0.5 for i, _ in enumerate(años)], años)
plt.show()


Histogramas con la librería matplotlib de Python

Visualizar datos de un fichero .csv 



Ya habíamos creado un archivo .csv con los datos y habíamos creado un objeto datos con el csv cargado. La instrucción plot nos muestra un punto azul por cada dato. En la x pedimos que muestre los datos de la columna de Febrero, FEB y en la y las filas correspondientes a los años.

datos.plot(kind="scatter", x="FEB", y="Anno")

Visualizar datos de un fichero .csv con Python


Si queremos que nos muestre un color más intenso donde hay mayor densidad de puntos, podemos añadir el parámetro alpha con un número entre 0 y 1 que mostrará los puntos más oscuros o más claros.

datos.plot(kind="scatter", x="MAR", y="Anno", alpha=0.5)

Visualizar datos de un fichero .csv con Python

Buscando correlacciones

Para buscar correlacciones entre nuestros datos, podemos tener una vista general de los datos de cualquier columna correlaccionados con el resto de columnas, para ello basta con poner estas instrucciones.
corr_matrix = datos.corr()

corr_matrix["AÑO"].sort_values(ascending=False)

Buscando correlacciones con python



En la imagen podemos ver que la correlación de la columna elegida es siempre 1 porque es ella misma y luego en función de si los valores difieren o se asemejan a los de nuestra columna aparecerán más arriba o más abajo con más o menos puntuación entre 0 y 1 aunque esto es así porque en nuestro caso particular todas las correlaciones son positivas, si fueran negativas los valores estarían entre -1 y 0. Así que, en términos generales los valores de la correlación estarán entre -1 y 1. También hay que tener en cuenta que esta función sólo mide correlaciones lineales.
Otra forma de comprobar la correlación entre variables sería la función scatter_matrix()  de la librería pandas.
from pandas.plotting import scatter_matrix

from pandas.plotting import scatter_matrix
attributes = ["Anno", "ENE", "FEB","MAR","ABR","MAY","JUN","JUL","AGO","SEP","OCT","NOV","DIC","AÑO"]

scatter_matrix(datos[attributes], figsize=(12, 8))

Si tenemos muchas columnas, además de tardar mucho, nos generará una gráfica demasiado grande, en la que será difícil ver nada.



Buscando correlacciones con python


Es mejor compararlas de pocas en pocas, por ejemplo la temperatura media anual con la de enero.

from pandas.plotting import scatter_matrix
attributes = ["AÑO", "ENE"]

scatter_matrix(datos[attributes], figsize=(12, 8))

Buscando correlacciones con python


Ahora es mucho más fácil buscar la correlación entre enero y la temperatura media anual. Podemos ver que las gráficas de la diagonal se comparan los datos consigo mismos por lo que son  relevantes. Una vez encontradas las correlaciones podemos tener un vistazo más preciso haciendo.

datos.plot(kind="scatter", x="ENE", y="AÑO",
             alpha=0.1)

plt.axis([0, 10, 0, 20])

Correlacciones

No hay comentarios:

Publicar un comentario