import numpy as np
from sklearn.neighbors import KDTree
X = np.array([[1,1],[2,2], [3,3]]) # 3 points in 2 dimensions
tree = KDTree(X)
dist, ind = tree.query([[1.25, 1.35]], k=2)
print(ind) # indices of 2 closest neighbors
print(dist) # distances to 2 closest neighbors
1 回答
这正是构建这些度量树的原因 .
你问的问题就像你要求的东西一样简单,就像使用sklearn的KDTree一样(根据游戏中的指标考虑BallTree):
日期:
需要明确的是:KNN通常是指基于度量树(KDTree,BallTree)的一些预构建算法,用于分类任务 . 通常,这些数据结构是人们唯一感兴趣的东西 .
Edit
如果我正确解释您的评论,您想使用manhattan / taxicab / l1 metric .
请查看here以获取这些空间树的兼容性列表 .
你会像这样使用它:
日期: