sklearn.metrics.pairwise
.haversine_distances¶
- sklearn.metrics.pairwise.haversine_distances()¶
Calcula la distancia Haversine entre las muestras en X y Y.
La distancia Haversine (o gran círculo) es la distancia angular entre dos puntos de la superficie de una esfera. Se asume que la primera coordenada de cada punto es la latitud, la segunda es la longitud, dadas en radianes. La dimensión de los datos debe ser 2.
\[D(x, y) = 2\arcsin[\sqrt{\sin^2((x1 - y1) / 2) + \cos(x1)\cos(y1)\sin^2((x2 - y2) / 2)}]\]- Parámetros
- Xarray-like de forma (n_samples_X, 2)
- Yarray-like de forma (n_samples_Y, 2), default=None
- Devuelve
- distancendarray de forma (n_samples_X, n_samples_Y)
Notas
Como la Tierra es casi esférica, la fórmula del haversine proporciona una buena aproximación de la distancia entre dos puntos de la superficie terrestre, con un error inferior al 1% en promedio.
Ejemplos
Queremos calcular la distancia entre el Aeropuerto Ezeiza (Buenos Aires, Argentina) y el Aeropuerto Charles de Gaulle (París, Francia).
>>> from sklearn.metrics.pairwise import haversine_distances >>> from math import radians >>> bsas = [-34.83333, -58.5166646] >>> paris = [49.0083899664, 2.53844117956] >>> bsas_in_radians = [radians(_) for _ in bsas] >>> paris_in_radians = [radians(_) for _ in paris] >>> result = haversine_distances([bsas_in_radians, paris_in_radians]) >>> result * 6371000/1000 # multiply by Earth radius to get kilometers array([[ 0. , 11099.54035582], [11099.54035582, 0. ]])