SKlearn: KDTree如何根据阈值return最近邻(Python)
SKlearn: KDTree how to return nearest neighbour based on threshold (Python)
我有一个包含 300 张图像的数据库,我为每个图像提取了一个 BOVW。从查询图像开始(query_BOVW 从同一个字典中提取)我需要在我的训练数据集中找到相似的图像。
我在我的训练集 kd_tree = KDTree(training)
上使用了 Sklearn KDTree,然后我用 kd_tree.query(query_vector)
计算了与查询向量的距离。最后一个函数将 return 的最近邻居数作为第二个参数,但我寻求的是为欧几里得距离设置一个阈值,并基于此阈值有不同数量的最近邻居。
我查看了文档,但没有找到任何相关信息。我在寻找可能毫无意义的东西是不是错了?
感谢您的帮助。
从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
你想在这里使用query_radius。
query_radius(self, X, r, count_only = False):
query the tree for neighbors within a radius r
...
就是上面的例子link:
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
我有一个包含 300 张图像的数据库,我为每个图像提取了一个 BOVW。从查询图像开始(query_BOVW 从同一个字典中提取)我需要在我的训练数据集中找到相似的图像。
我在我的训练集 kd_tree = KDTree(training)
上使用了 Sklearn KDTree,然后我用 kd_tree.query(query_vector)
计算了与查询向量的距离。最后一个函数将 return 的最近邻居数作为第二个参数,但我寻求的是为欧几里得距离设置一个阈值,并基于此阈值有不同数量的最近邻居。
我查看了文档,但没有找到任何相关信息。我在寻找可能毫无意义的东西是不是错了?
感谢您的帮助。
从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
你想在这里使用query_radius。
query_radius(self, X, r, count_only = False):
query the tree for neighbors within a radius r
...
就是上面的例子link:
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