- 1. Distancia Euclidiana
- 1.1. Fórmula
- 1.2. Ventajas
- 1.3. Desventajas
- 1.4. Snippet de código
- 2. Distancia Manhattan
- 2.1. Fórmula
- 2.2. Ventajas
- 2.3. Desventajas
- 2.4. Snippet de código
- 3. Distancia de Minkowski
- 3.1. Fórmula
- 3.2. Ventajas
- 3.3. Desventajas
- 3.4. Snippet de código
- 4. Otras Métricas Especializadas
- 4.1. Distancia Coseno
- 4.1.1. Snippet de código
- 4.2. Distancia Hamming
- 4.2.1. Snippet de código
- 4.1. Distancia Coseno
- 5. ¿Cuál elegir?
- 6. Referencias
Métricas de Distancia en Machine Learning

Las métricas de distancia son fundamentales en algoritmos de machine learning como K-Nearest Neighbors (KNN), clustering y otros métodos que dependen de la similitud entre puntos de datos.
ML 20 : Distance Metrics Models | Euclidean | Manhattan | Minkowski | Hamming Distance with [09:52]
1. Distancia Euclidiana
La distancia Euclidiana es una de las métricas más utilizadas para medir la cercanía entre dos puntos en un espacio multidimensional. Es equivalente a la distancia en línea recta entre dos puntos.
1.1. Fórmula
La fórmula de la Distancia Euclidiana entre dos puntos A(x1,y1,z1,… ) y B(x2,y2,z2,… ) en un espacio n-dimensional es:

Donde:
- n: Número de dimensiones (pueden ser 2, 3, o más).
- xi: Coordenadas del punto A.
- yi: Coordenadas del punto B.
1.2. Ventajas
- Fácil de interpretar.
- Adecuada para datos con relaciones continuas y lineales.
1.3. Desventajas
- Sensible a la escala de las variables. Es importante normalizar los datos antes de usar esta métrica.
1.4. Snippet de código
Código 01.py
def euclidean_distance(x, y):
dist = 0.0
for i in range(len(x)):
dist += (x[i] - y[i])**2
return sqrt(dist)
print(euclidean_distance([1,2,3],[4,5,6]))
Salida:
5.196152422706632
2. Distancia Manhattan
La distancia Manhattan, también conocida como distancia de la “ciudad” o “taxista” (Geometría del taxista), mide la distancia entre dos puntos sumando las diferencias absolutas en cada dimensión.
2.1. Fórmula

2.2. Ventajas
- Menos sensible a outliers en comparación con la distancia Euclidiana.
- Adecuada para datos donde el movimiento está restringido a ejes rectos.
2.3. Desventajas
- Puede no ser intuitiva en algunos contextos donde se espera una “línea recta” como referencia.
2.4. Snippet de código
Código 02.py
def manhattan_distance(x, y):
dist = 0.0
for i in range(len(x)):
dist += abs(x[i] - y[i])
return dist
print(manhattan_distance([1,2,3],[4,5,6]))
Salida:
9.0
3. Distancia de Minkowski
La distancia de Minkowski es una generalización de las distancias Euclidiana y Manhattan. Su parámetro p define qué tipo de distancia calcular.
3.1. Fórmula

- Cuando
p = 2: Distancia Euclidiana. - Cuando
p = 1: Distancia Manhattan.
3.2. Ventajas
- Muy flexible, ya que se puede ajustar el valor de
psegún el problema.
3.3. Desventajas
- La interpretación del parámetro
ppuede ser compleja en algunos casos.
3.4. Snippet de código
Código 03.py
def minkowski_distance(x, y, p=1):
dist = 0.0
for i in range(len(x)):
dist += abs((x[i] - y[i])**p)
return dist** (1/p)
print('When p=1 it is Manhattan distance: ' ,minkowski_distance([1,2,3],[4,5,6]))
print('When p=2 it is Euclidean distance:',minkowski_distance([1,2,3],[4,5,6], p=2))
Salida:
When p=1 it is Manhattan distance: 9.0
When p=2 it is Euclidean distance: 5.196152422706632
4. Otras Métricas Especializadas
En ciertos contextos, las métricas tradicionales pueden no ser ideales. Algunas métricas especializadas incluyen:
4.1. Distancia Coseno

Mide el ángulo entre dos vectores en un espacio multidimensional, en lugar de su distancia absoluta.

Donde cosθ es el coseno del ángulo entre los vectores x e y, calculado como:

Por lo tanto, la distancia coseno se calcula como:

- Valor entre -1 y 1.
- Común en procesamiento de texto y sistemas de recomendación.
4.1.1. Snippet de código
Código 04.py
import numpy as np
def distancia_coseno(x, y):
x = np.array(x)
y = np.array(y)
# Producto escalar
producto_escalar = np.dot(x, y)
# Normas (magnitudes) de los vectores
norma_x = np.linalg.norm(x)
norma_y = np.linalg.norm(y)
# Coseno del ángulo
coseno_similitud = producto_escalar / (norma_x * norma_y)
# Distancia coseno
distancia = 1 - coseno_similitud
return distancia
# Ejemplo de uso
vector1 = [1, 2, 3]
vector2 = [4, 5, 6]
resultado = distancia_coseno(vector1, vector2)
print(f"La distancia coseno es: {resultado:.4f}")
Salida:
La distancia coseno es: 0.0254
4.2. Distancia Hamming

La Distancia de Hamming cuenta el número de posiciones en las que dos cadenas de caracteres o binarios son diferentes.
- Utilizada en códigos de corrección de errores y clasificación binaria.
4.2.1. Snippet de código
Código 05.py
def hamming_distance(array_1, array_2):
if len(array_1) != len(array_2):
message = 'Both the arrays should have equal lengths'
return message
else:
common_character_count = 0
for i in range(len(array_1)):
if array_1[i] != array_2[i]:
common_character_count += 1
else:
continue
return common_character_count
print(hamming_distance('shweta', 'sharma'))
Salida:
3
5. ¿Cuál elegir?
La selección de la métrica de distancia depende del contexto del problema:
- Datos continuos y normalizados: Distancia Euclidiana.
- Datos con restricciones de movimiento: Distancia Manhattan.
- Flexibilidad: Distancia de Minkowski.
- Textos o vectores escasos: Similitud Coseno.
- Correlación entre variables: Distancia Mahalanobis.
Cada métrica tiene sus ventajas y desventajas, y la correcta elección puede mejorar significativamente el desempeño de un modelo.
6. Referencias
- Kaggle Distance Measures for Machine Learning ADITYA RAJ · 3y ago.
- Kaggle Distance Metric used in Machine Learning shweta sharma · 4y ago.
- https://machinelearningmastery.com/distance-measures-for-machine-learning/
- https://towardsdatascience.com/9-distance-measures-in-data-science-918109d069fa