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.        ]])