PyFlann 使用方法

PyFlann 使用方法

PyFlann 其实是 FLANNpython 接口,当前支持python2 和 python3。FLANN 的意思是Fast Library for Approximate Nearest Neighbors,也就是快速解决最近点搜类问题的库。

这一类问题,是一个在尺度空间中寻找最近点的优化问题。问题描述如下:在尺度空间M中给定一个点集S和一个目标点q ∈ M,在S中找到距离q最近的点。很多情况下,M为多维的欧几里得空间,距离由欧几里得距离或曼哈顿距离决定。

最近点搜索问题的快速解决在很多领域都有着重要意义,如:图像识别及分类、机器学习、文档查重、统计学和大数据等。但是,当这个维度很高的时候,解决起来是一个相当困难的工作。这导致很多研究者开始对更好的解决这一问题产生了兴趣。这个库提供了linear, kdtree, kmeans, composite, autotuned几种算法来更好的解决问题。

安装

pip安装

pip install pyflann

源码安装

git clone https://github.com/primetang/pyflann.git
cd pyflann
[sudo] python setup.py install

使用

pyflann 包 提供了一个名为 FLANN 的类,来负责执行最近点搜索这个具体的操作。这个类包含如下的函数。

def build_index(self, pts, **kwargs)

这个方法按照提交的算法,构建内部的数据结构排列,来加快后续的查找,如果需要多次查找的话,使用这种方法还是很棒的。它经常与方法 def nn_index(self, qpts, num_neighbors = 1, **kwargs) 共同使用。

pts 是数据集,必须是 numpy2D 数组或 matrix,用 row优先方式存储。

**kwargs 是一组不定的参数,首先包含一个参数 algorithm ,然后根据 algorithm 参数的不同,后续的参数也是不同的,总共有如下几种情况。

flann = pyflann.FLANN()

# 初始化 dataset
params = flann.build_index(dataset, algorithm = 'linear')
params = flann.build_index(dataset, algorithm = 'kdtree', trees)
params = flann.build_index(dataset, algorithm = 'autotuned',
    target_precision, build_weight, memory_weight, sample_fraction)
params = flann.build_index(dataset, algorithm = 
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值