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