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, wirdY=Xverwendet.
- 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. ]])