maxframe.learn.metrics.pairwise.haversine_distances#

maxframe.learn.metrics.pairwise.haversine_distances(X, Y=None)[源代码]#

计算 X 和 Y 中样本之间的 Haversine 距离

Haversine(大圆)距离是球面上两点之间的角度距离。每个点的第一个坐标被假定为纬度,第二个为经度,单位为弧度。数据的维度必须为 2。

\[D(x, y) = 2\arcsin[\sqrt{\sin^2((x1 - y1) / 2) + \cos(x1)\cos(y1)\sin^2((x2 - y2) / 2)}]\]
参数:
  • X (array_like, shape (n_samples_1, 2))

  • Y (array_like, shape (n_samples_2, 2), optional)

返回:

距离

返回类型:

{Tensor}, shape (n_samples_1, n_samples_2)

备注

由于地球几乎是球形的,Haversine 公式能够很好地近似地球表面两点之间的距离,平均误差小于 1%。

示例

我们希望计算埃塞萨机场(阿根廷布宜诺斯艾利斯)和戴高乐机场(法国巴黎)之间的距离

>>> from maxframe.learn.metrics.pairwise import haversine_distances
>>> bsas = [-34.83333, -58.5166646]
>>> paris = [49.0083899664, 2.53844117956]
>>> result = haversine_distances([bsas, paris])
>>> (result * 6371000/1000).execute()  # multiply by Earth radius to get kilometers
array([[    0.        , 11279.45379464],
       [11279.45379464,     0.        ]])