¿Cómo transformar las características geográficas de tu dataset con Python?

En este tutorial vemos cómo tratar las características geográficas de tu dataset en Python para hacerlas lo más informativas posible.

Características de ubicación

En muchas ocasiones nos encontraremos conjuntos de datos con características que se refieren a la localización geográfica de la observación.

Estas características espaciales, como la latitud y la longitud, se utilizan para especificar una ubicación en cualquier lugar del planeta y además encierran información valiosa que, si se maneja adecuadamente, puede enriquecer mucho nuestros análisis y modelos de Machine Learning.

Las coordenadas geográficas suelen estar representadas en un dataset como características numéricas de latitud y longitud.

Hemos visto en otros tutorials como tratar las variables numéricas:

Sin embargo, si las tratamos utilizando estas mismas técnicas no estaremos aprovechando su potencial informativo.

Tratar latitud y longitud como valores numéricos ignora las relaciones espaciales complejas.

Una vivienda no tiene un precio mayor cuánto mayor es su latitud o su longitud.

Las ubicaciones cercanas pueden compartir características importantes (como accesibilidad a servicios o condiciones ambientales) que no se capturan adecuadamente al tratarlas como simples valores numéricos.

Para ver cómo transformar las características geográficas y sacarles el máximo partido vamos a usar dataset del precio de la vivienda en California.

Para descargarlo puedes seguir este tutorial en el que descargábamos el dataset desde Kaggle a Google Colab.

Aparte de eso sólo vamos a necesitar un Notebook de Google Colab.

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

housing_data = pd.read_csv('housing.csv')

Discretización o binning de características geográficas

Hemos visto como en la mayoría de casos el valor numérico preciso de las coordenadas al determinar una ubicación no tiene gran valor predictivo por sí mismo.

Discretizar las coordenadas en intervalos puede capturar mejor las variaciones locales.

Puedes averiguar más sobre distintas técnicas para discretizar variables numéricas en este tutorial.

Membresía requerida

Este contenido está disponible únicamente para suscriptores.

Puedes apuntarte a la plataforma en este enlace

¿Ya eres un ninja? logeate aquí

Ingeniería de características geográficas

Ya hemos ganado mucho al discretizar nuestras variables geográficas en bins 😊

Sin embargo, hemos tratado la latitud y la longitud como características independientes.

La ubicación de un punto en la Tierra está determinada conjuntamente por su latitud y longitud, y al ignorar la interacción entre estas dos dimensiones, estamos perdiendo información que podría mejorar el rendimiento de nuestros modelos de machine learning.

Además, si tenemos información geográfica de otros puntos o áreas de interés que pudieran interactuar con la ubicación de nuestras observaciones podríamos crear nuevas características informativas a partir del cálculo de distancias.

Feature cross

En esta parte del tutorial vamos a crear una característica combinada a partir de la latitud y longitud que hemos discretizado antes.

Para ello seguiremos los siguientes pasos:

  1. Crearemos una nueva característica con el cruce los bins de latitud y longitud.
  2. La nueva característica con el feature cross de latitud y longitud será una variable categórica que tendremos que codificar.

Membresía requerida

Este contenido está disponible únicamente para suscriptores.

Puedes apuntarte a la plataforma en este enlace

¿Ya eres un ninja? logeate aquí

Distancias

Si además tenemos información geográfica de otros puntos de interés nos puede ser de utilidad crear nuevas características que representen la distancia.

Para ello utilizaremos una medida de distancia que sea apropiada para nuestro caso de uso (la distancia Euclidea suele ser una buena opción aunque utilizar una librería como geopandas puede ser más fácil y preciso) y calcularemos las distancias entre las ubicaciones de nuestras observaciones y estos puntos de interés.

Por ejemplo, si estamos analizando precios de viviendas, podríamos querer saber la distancia de cada vivienda a centros urbanos, estaciones de tren, parques, escuelas, o centros comerciales.

En el caso de California podemos utilizar la ubicación de sus ciudades más importantes:

CiudadLatitudLongitud
Los Ángeles34.0522-118.2437
San Francisco37.7749-122.4194
Sacramento38.5816-121.4944

Estas distancias pueden proporcionar información muy interesante sobre factores que influyen en el precio de las viviendas.

Membresía requerida

Este contenido está disponible únicamente para suscriptores.

Puedes apuntarte a la plataforma en este enlace

¿Ya eres un ninja? logeate aquí
Ingeniería de características geográficas geopandas

Áreas de interés

A veces, podemos tener regiones geográficas definidas por las coordenadas de un polígono que delimitan un área específica de interés, como un parque nacional.

Podríamos crear nuevas características que indicaran si nuestras observaciones están dentro del área de interés o no.

Visualización

Además de la transformación de las características geográficas para aprovechar al máximo su potencial informativo, una parte muy interesante de este tipo de datos es su visualización y exploración.

A través de gráficos podemos analizar de manera muy rápida y eficiente los patrones geográficos de nuestras observaciones.

Para esta parte de representación volvemos a utilizar los valores numéricos precisos originales de nuestras características de latitud y longitud.

housing_data.plot(kind="scatter", x="longitude", y="latitude", c="median_house_value", cmap="jet", colorbar=True,
             legend=True, sharex=False, grid=True, figsize=(10, 7))
plt.show()
Representación de características geográficas con Matplotlib
  • kind: Especifica el tipo de gráfico a generar. En este caso kind="scatter" indica que se debe crear un gráfico de dispersión.
  • x: Define la columna del DataFrame que se usará para los valores en el eje x (longitude).
  • y: Define la columna del DataFrame que se usará para los valores en el eje y (latitude).
  • c: Define la columna del DataFrame cuyos valores se utilizarán para colorear los puntos en el gráfico. En este caso el valor de las viviendas.
  • cmap: Especifica el mapa de colores que se usará para los puntos en el gráfico.
  • colorbar: Determina si se debe mostrar una barra de color en el gráfico.
  • grid: Especifica si se deben mostrar líneas de cuadrícula en el gráfico.
  • figsize: Define el tamaño de la figura del gráfico en pulgadas.

Añadir mapas base a la visualización de datos geográficos

Los mapas base pueden darnos un contexto espacial y geográfico que nos ayude a interpretar y comunicar los datos de manera más efectiva.

Además, gracias a la utilización de mapas base podemos mejorar la interpretación visual de nuestros datos ya que tendremos puntos de referencia conocidos, como ríos, montañas, barrios o carreteras.

Y queda mucho más bonito 😊

Membresía requerida

Este contenido está disponible únicamente para suscriptores.

Puedes apuntarte a la plataforma en este enlace

¿Ya eres un ninja? logeate aquí
Mostrar un mapa base con geopandas

Accede a todo el contenido premium

Ya no necesitas pagar cientos de euros por un Bootcamp para convertirte en ninja de los datos. Por solo 17€/mes (o menos 🤯), obtén acceso al podcast premium, a todos los tutoriales y a los resúmenes de los libros más top sobre Machine Learning y Ciencia de datos y aprende a tu ritmo.
¡Empieza ahora!
Copyright © 2024  · Datos 🥷 · Todos los derechos reservados