我有一个包含300张图像的数据库,我为每个图像提取了一个BOVW。从查询图像开始(使用从同一字典中提取的query_BOVW),我需要在训练数据集中找到类似的图像。
我在训练集kd_tree = KDTree(training)
上使用了Sklearn KDTree,然后用kd_tree.query(query_vector)
计算查询向量的距离。最后一个函数将第二个参数作为返回的最近邻居的数量,但我所寻求的是设置欧几里德距离的阈值,并且基于该阈值具有不同数量的最近邻居。
我查看了文档,但我没有找到任何相关信息。我错误地寻找可能毫无意义的东西吗?
感谢您的帮助。
答案 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