我正在寻找可扩展的工具来在稀疏数据点上构建kNN图。
数据点的维度和数量都可以达到数百万。
我已经尝试过的:
- sklearn.neighbors.kneighbors_graph:对稀疏数据进行暴力搜索,给出二次时间。
- flann:仅支持密集数组
- pysparnn : 运行时间不是很满意(可能是因为它是用Python写的)
- mlpack 中的knn搜索:仅支持密集数据
- scipy.spatial.KDTree:将稀疏数据转换为密集数据
- SparseLSH:它是用 Python 实现的,所以我不太确定可扩展性
- elasticsearch:它似乎只支持索引文档,而不是稀疏特征。
- 我想到elasticsearch的原因是:稀疏数据上的knn可以被视为检索IR中的前k个“文档”。
感谢您的任何评论/答案:)