sklearn.metrics.pairwise.haversine_distances?
sklearn.metrics.pairwise.haversine_distances(X, Y=None)
計算X和Y中樣本之間的Haversine(半正矢)距離
Haversine(或大圓)距離是球體表面上兩點之間的角距離。 假定每個點的第一個距離為緯度,第二個為經度,以弧度為單位。數據的維數必須為2。
參數 | 說明 |
---|---|
X | array_like, shape (n_samples_1, 2) |
Y | array_like, shape (n_samples_2, 2), optional |
返回值 | 說明 |
---|---|
distance | {array}, shape (n_samples_1, n_samples_2) |
注
由于地球幾乎是球形的,因此Haversine公式可以很好地近似地球表面兩點之間的距離,平均誤差小于1%。
示例
我們要計算Ezeiza機場(阿根廷布宜諾斯艾利斯)和戴高樂機場(法國巴黎)之間的距離
>>> 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. ]])