haversine_distances#

sklearn.metrics.pairwise.haversine_distances(X, Y=None)[Quelle]#

Berechne die Haversine-Distanz zwischen Stichproben in X und Y.

Die Haversine-Distanz (oder Großkreisdistanz) ist die Winkeldistanz zwischen zwei Punkten auf der Oberfläche einer Kugel. Die erste Koordinate jedes Punktes wird als Breitengrad, die zweite als Längengrad angenommen, beide in Radiant angegeben. Die Dimension der Daten muss 2 sein.

\[D(x, y) = 2\arcsin[\sqrt{\sin^2((x_{lat} - y_{lat}) / 2) + \cos(x_{lat})\cos(y_{lat})\ \sin^2((x_{lon} - y_{lon}) / 2)}]\]
Parameter:
X{array-like, sparse matrix} von Form (n_samples_X, 2)

Ein Merkmals-Array.

Y{array-like, sparse matrix} von Form (n_samples_Y, 2), Standard=None

Ein optionales zweites Merkmals-Array. Wenn None, wird Y=X verwendet.

Gibt zurück:
distancesndarray der Form (n_samples_X, n_samples_Y)

Die Distanzmatrix.

Anmerkungen

Da die Erde annähernd kugelförmig ist, liefert die Haversine-Formel eine gute Annäherung der Distanz zwischen zwei Punkten auf der Erdoberfläche mit durchschnittlich weniger als 1 % Fehler.

Beispiele

Wir wollen die Distanz zwischen dem Flughafen Ezeiza (Buenos Aires, Argentinien) und dem Flughafen Charles de Gaulle (Paris, Frankreich) berechnen.

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