mars.learn.metrics.pairwise.haversine_distances#
- mars.learn.metrics.pairwise.haversine_distances(X, Y=None)[来源]#
计算X和Y中样本之间的Haversine距离
哈弗辛距离(或大圆距离)是球面上两个点之间的角距离。每个点的第一个距离被假定为纬度,第二个是经度,以弧度表示。数据的维度必须为2。
\[D(x, y) = 2\arcsin[\sqrt{\sin^2((x1 - y1) / 2) + \cos(x1)\cos(y1)\sin^2((x2 - y2) / 2)}]\]- Parameters
X (类数组, 形状 (n_samples_1, 2)) –
Y (数组类似, 形状 (n_samples_2, 2), 可选) –
- Returns
距离
- Return type
{Tensor},形状为 (n_samples_1, n_samples_2)
备注
由于地球几乎是球形的,haversine公式可以很好地近似地球表面两点之间的距离,平均误差低于1%。
示例
我们想要计算埃塞萨机场(阿根廷布宜诺斯艾利斯)和戴高乐机场(法国巴黎)之间的距离
>>> from mars.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. ]])