Python 快速查找字典向量到给定向量。高维
我在寻找一个可缩放的答案,但出于我的特殊目的,我有一个48维向量。这可以表示为48个整数的数组,所有整数都在0到255之间 我有一本关于这些向量的大字典,大约有25000个 我需要能够获取数据库中可能存在或不存在的向量,并快速找到数据库中最接近的向量。我所说的最近距离,是指传统的距离公式 我的代码将以python结束,但这是一个更一般的问题Python 快速查找字典向量到给定向量。高维,python,algorithm,math,vector,Python,Algorithm,Math,Vector,我在寻找一个可缩放的答案,但出于我的特殊目的,我有一个48维向量。这可以表示为48个整数的数组,所有整数都在0到255之间 我有一本关于这些向量的大字典,大约有25000个 我需要能够获取数据库中可能存在或不存在的向量,并快速找到数据库中最接近的向量。我所说的最近距离,是指传统的距离公式 我的代码将以python结束,但这是一个更一般的问题 蛮力太慢了。我需要一个接近字典速度的查找。有人有想法吗?我建议实现一个可以执行的。k维中N个点的最坏情况搜索时间是O(k.N^(1-1/k)),因此它应该以
蛮力太慢了。我需要一个接近字典速度的查找。有人有想法吗?我建议实现一个可以执行的。k维中N个点的最坏情况搜索时间是
O(k.N^(1-1/k))
,因此它应该以N次线性扩展
如果我有时间,我会回到这个答案,并提供一个不那么简洁的解释,维基百科的
由于您使用的是python,因此此Scipy cookbook条目应该会有所帮助。另一种证明有用的技术是位置敏感哈希:
你的问题不清楚你是否需要精确的近邻。如果您对返回近似最近邻的向量感到满意,则有更快的解决方案。请参见此处()非常简洁,但至少指针似乎准确无误!谢谢你这么说。我做了很多研究,虽然kdtrees很酷,我学到了很多,但下面提到的LSH方法似乎是最适用的解决方案,因为我的问题的高维性。到目前为止,LSH似乎最适合我。这是一个巨大的资源。2006年关于该算法的论文是最有帮助的。