我有一个 n 维向量,我想使用欧几里得距离在 n 维向量列表中找到它的 k 个最近邻。
我编写了以下代码(k=10),它可以工作,但运行速度太慢,我想知道是否有更优化的解决方案。
def nearest_neighbors(value, array, nbr_neighbors=1):
return np.argsort(np.array([np.linalg.norm(value-x) for x in array]))[:nbr_neighbors]
使用 scipy 的kd-tree.
一个小例子是可以在这里找到.
很多人似乎抱怨性能并推荐sklearn的实现不过(链接 sklearn.neighbors,它正在使用这个数据结构内部)!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)