假设我有多维数据集,它有许多向量作为数据。我正在编写一个算法,需要对所有这些向量进行k最近邻搜索 - 经典KNN。但是,在我的算法中,我将新的向量添加到整个数据集中,并且需要将这些新向量包含到我的KNN搜索中。我想有效地做到这一点。我查看了KD树和scikit-learn的球树,但他们不允许插入(根据概念的性质)。我不确定SR树或R树是否会提供插入,但无论如何,我无法为3D以外的数据找到python实现。
关于搜索我可以使用查询"给我最近的向量" (所以1-NN)或"给我所有更接近半径的矢量"。
答案 0 :(得分:2)
一般评论:我不太明白为什么KD-Trees在高维kNN查询中如此受欢迎。在我的experience中,其他树木在高维度或大型数据集中的扩展性更好(我测试了高达25万亿点和(仅)最多40个维度)。更多细节:
的Python: