python sklearn KDTree与haversine距离

use*_*380 5 python kdtree scikit-learn

我尝试创建 WGS84 坐标的 KD 树并找到特定半径内的邻居

from sklearn.neighbors.dist_metrics import DistanceMetric
from sklearn.neighbors.kd_tree import KDTree    
T = KDTree([[47.8665, 8.90123]], metric=DistanceMetric.get_metric('haversine'))
Run Code Online (Sandbox Code Playgroud)

但得到以下错误:

ValueError: metric HaversineDistance is not valid for KDTree
Run Code Online (Sandbox Code Playgroud)

如何在 KD 树中使用半正弦距离?

Ano*_*sse 4

kd 树(据我所知)只能与 Minkowski 范数一起使用。

还有其他树,例如 sklearn 中的球树或 ELKI 中的 covertree,它们与半正矢距离一起使用,因为它是一个度量。