SKlearn:KDTree如何根据阈值返回最近邻居(Python)

时间:2018-04-04 11:44:20

标签: python tree scikit-learn threshold

我有一个包含300张图像的数据库,我为每个图像提取了一个BOVW。从查询图像开始(使用从同一字典中提取的query_BOVW),我需要在训练数据集中找到类似的图像。

我在训练集kd_tree = KDTree(training)上使用了Sklearn KDTree,然后用kd_tree.query(query_vector)计算查询向量的距离。最后一个函数将第二个参数作为返回的最近邻居的数量,但我所寻求的是设置欧几里德距离的阈值,并且基于该阈值具有不同数量的最近邻居。

我查看了文档,但我没有找到任何相关信息。我错误地寻找可能毫无意义的东西吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您想在此处使用query_radius

  

query_radius(self,X,r,count_only = False):

     

在树中查询半径为r的邻居

     

...

上面链接中的示例:

import numpy as np
np.random.seed(0)
X = np.random.random((10, 3))  # 10 points in 3 dimensions
tree = BinaryTree(X, leaf_size=2)     
print(tree.query_radius(X[0], r=0.3, count_only=True))

ind = tree.query_radius(X[0], r=0.3)  
print(ind)  # indices of neighbors within distance 0.3

答案 1 :(得分:0)

documentation,您可以使用方法query_radius

查询给定半径内的邻居:

import numpy as np
np.random.seed(0)
X = np.random.random((10, 3))  # 10 points in 3 dimensions
tree = KDTree(X, leaf_size=2)     
print(tree.query_radius(X[0], r=0.3, count_only=True))
ind = tree.query_radius(X[0], r=0.3) # indices of neighbors within distance 0.3 

这项工作与sklearn版本19.1