这正是构建这些度量树的原因 .
你问的问题就像你要求的东西一样简单,就像使用sklearn的KDTree一样(根据游戏中的指标考虑BallTree):
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
日期:
[[0 1]]
[[ 0.43011626 0.99247166]]
需要明确的是:KNN通常是指基于度量树(KDTree,BallTree)的一些预构建算法,用于分类任务 . 通常,这些数据结构是人们唯一感兴趣的东西 .
Edit
请查看here以获取这些空间树的兼容性列表 .
你会像这样使用它:
X = np.array([[1,1],[2,2], [3,3]]) # 3 points in 2 dimensions
tree = KDTree(X, metric='l1') # !!!
dist, ind = tree.query([[1.25, 1.35]], k=2)
print(ind) # indices of 2 closest neighbors
print(dist) # distances to 2 closest neighbors
日期:
[[0 1]]
[[ 0.6 1.4]]