Ejemplos distancias entre dos puntos
Aquí tienes un ejemplo de cálculo de diferentes tipos de distancias entre varios puntos en un espacio bidimensional, sin incluir la distancia de Mahalanobis. Usaremos las distancias Euclidiana, Manhattan y Chebyshev.
Contexto del Ejemplo
Imaginemos que tenemos un conjunto de puntos que representan las ubicaciones de varias tiendas en una ciudad, y queremos calcular las distancias entre estas tiendas. Los puntos en el plano cartesiano se representan como coordenadas ((x, y)).
Puntos de Ejemplo
Supongamos que tenemos las siguientes ubicaciones de las tiendas:
- Tienda A: (1, 1)
- Tienda B: (1, 5)
- Tienda C: (7, 1)
- Tienda D: (3, 3)
- Tienda D: (4, 8)
Cálculo de Distancias
A continuación se muestra el código en Python que calcula las diferentes distancias entre las tiendas:
import numpy as np import pandas as pd from scipy.spatial import distance # Definimos las coordenadas de las tiendas tiendas = { 'Tienda A': (1, 1), 'Tienda B': (1,5), 'Tienda C': (7, 1), 'Tienda D': (3, 3), 'Tienda E': (4, 8) } # Convertimos las coordenadas a un DataFrame para facilitar el cálculo df_tiendas = pd.DataFrame(tiendas).T df_tiendas.columns = ['X', 'Y'] print("Coordenadas de las tiendas:") print(df_tiendas) # Inicializamos un DataFrame para almacenar las distancias distancias_eu = pd.DataFrame(index=df_tiendas.index, columns=df_tiendas.index) distancias_mh = pd.DataFrame(index=df_tiendas.index, columns=df_tiendas.index) distancias_ch = pd.DataFrame(index=df_tiendas.index, columns=df_tiendas.index) # Cálculo de distancias for i in df_tiendas.index: for j in df_tiendas.index: # Distancia Euclidiana distancias_eu.loc[i, j] = distance.euclidean(df_tiendas.loc[i], df_tiendas.loc[j]) # Distancia Manhattan distancias_mh.loc[i, j] = distance.cityblock(df_tiendas.loc[i], df_tiendas.loc[j]) # Distancia Chebyshev distancias_ch.loc[i, j] = distance.chebyshev(df_tiendas.loc[i], df_tiendas.loc[j]) # Mostrar los resultados print("\nDistancias Euclidianas entre las tiendas:") print(distancias_eu) print("\nDistancias Manhattan entre las tiendas:") print(distancias_mh) print("\nDistancias Chebyshev entre las tiendas:") print(distancias_ch)
Explicación del Código
- Importaciones: Usamos las librerías
numpy
,pandas
, yscipy.spatial.distance
para los cálculos. - Definición de Puntos: Definimos un diccionario con las coordenadas de las tiendas.
- DataFrame: Convertimos el diccionario a un DataFrame de
pandas
para facilitar la manipulación de datos. - Cálculo de Distancias: Utilizamos bucles anidados para calcular las distancias entre todas las combinaciones de tiendas.
- Distancia Euclidiana: Utiliza la función
distance.euclidean
. - Distancia Manhattan: Utiliza la función
distance.cityblock
. - Distancia Chebyshev: Utiliza la función
distance.chebyshev
.
- Distancia Euclidiana: Utiliza la función
- Impresión de Resultados: Se imprimen las distancias calculadas entre las tiendas, así como las distancias euclidianas.
Interpretación de Resultados
- Distancia Euclidiana: Útil para determinar distancias “reales” en un espacio cartesiano.
- Distancia Manhattan: Útil en contextos donde solo se pueden mover en ejes, como en cuadrículas de ciudades.
- Distancia Chebyshev: Importante en problemas de optimización donde se permite el movimiento en una sola dirección en un espacio multidimensional.