我想计算python中的K最近邻居。我应该使用哪个库?python中的K最近邻居
13
A
回答
20
我认为你应该使用scikit ann。
关于最近的neighbour here有一个很好的教程。
根据文档:
安为近似最邻近(ANN)库(http://www.cs.umd.edu/~mount/ANN/),由David M.摩和苏尼的Arya开发了SWIG生成Python包装。安提供一个不可变kdtree实现(经由ANN)能够执行k-最近邻和近似k
3
scipy.spatial.cKDTree 是快速和固体。 有关将其用于NN插值的示例,请参阅SO上的(ahem) inverse-distance-weighted-idw-interpolation-with-python。
(如果你可以说,例如:“我在3D 1M点,想K = 5楼最接近的1K新点的邻居”, 你可能会得到更好的答案或代码示例。
你想要做什么邻居们一旦找到了它们?)
5
我写了一个脚本来比较FLANN和scipy.spatial.cKDTree,无法获得ANN包装器来编译。您可以尝试一下,看看适用于您的应用程序的内容。我的测试用例与FLANN相比,cKDTree的运行时间相当,FLANN的速度快了1.25倍。当我增加testSize FLANN的速度比cKDTree快两倍。由于它不是标准python软件包的一部分,因此像FLANN似乎更难以整合,具体取决于项目。
import cProfile
from numpy import random
from pyflann import *
from scipy import spatial
# Config params
dim = 4
knn = 5
dataSize = 1000
testSize = 1
# Generate data
random.seed(1)
dataset = random.rand(dataSize, dim)
testset = random.rand(testSize, dim)
def test1(numIter=1000):
'''Test tree build time.'''
flann = FLANN()
for k in range(numIter):
kdtree = spatial.cKDTree(dataset, leafsize=10)
params = flann.build_index(dataset, target_precision=0.0, log_level = 'info')
def test2(numIter=100):
kdtree = spatial.cKDTree(dataset, leafsize=10)
flann = FLANN()
params = flann.build_index(dataset, target_precision=0.0, log_level = 'info')
for k in range(numIter):
result1 = kdtree.query(testset, 5)
result2 = flann.nn_index(testset, 5, checks=params['checks'])
import cProfile
cProfile.run('test2()', 'out.prof')
3
它本身在SciPy的,如果你希望做一个kd树的方法:http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.KDTree.html#scipy.spatial.KDTree
相关问题
- 1. K-最近邻居
- 2. 查找K最近邻居
- 3. K最近邻居伪码?
- 4. k最近邻居算法k的值
- 5. sklearn k最近邻居问题
- 6. chisel k最近邻居verilog输出
- 7. python近似最近邻居库(WINDOWS)
- 8. K-NN邻居到Python
- 9. 如何通过R最近邻居求解最近邻居?
- 10. k最近邻居中浮点数的文字无效
- 11. k最近邻居关系图在Java中的实现
- 12. k-最近邻算法
- 13. K最近邻分类器
- 14. JavaScript的最近邻居库
- 15. 存储最近的邻居
- 16. R,在矩阵中创建K最近邻居权重
- 17. 如何在R中安装k最近邻居
- 18. k最近邻居在3维空间中查询
- 19. 点的第k个最近邻居的空间查询
- 20. matlab中的k最近邻分类器
- 21. 如何获得geodjango的k个最近邻居?
- 22. 如何使用k-d树找到最近的邻居?
- 23. 使用openmp和分段错误的并行K最近邻居
- 24. 多维立方体上的Postgresql k最近邻居(KNN)
- 25. 如何遍历KDTree找到最近的k个邻居?
- 26. 具有闭环维数的K最近邻居
- 27. 寻找给定矢量的k-最近邻居?
- 28. K最近的邻居与高尔距离测量在R
- 29. K最近的邻居在sklearn半径 - 椭圆
- 30. 移动查询点的K最近邻居
+1这个库是非常容易的工作。 – 2011-04-06 12:56:38
+1,非常有用的链接! – juanchopanza 2011-04-06 13:03:28
一个用于有用的链接 – pylover 2012-06-15 19:28:14