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.distancepara los cálculos. - Definición de Puntos: Definimos un diccionario con las coordenadas de las tiendas.
- DataFrame: Convertimos el diccionario a un DataFrame de
pandaspara 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.