基于自定义距离度量的稀疏矩阵K近邻(KNN)

2024-06-28 19:32:02 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个大小为NxN(N=900000)的稀疏矩阵(使用^{})创建,我试图使用自定义距离度量为testset中的每一行查找前k个最近邻(来自输入矩阵的稀疏行向量)。基本上,输入矩阵的每一行表示一个项,对于testset中的每个项(行),我需要找到它的knn。在

尝试次数:

  • 尝试使用^{}。但是,在处理稀疏矩阵时,sklearn似乎没有将可调用度量函数作为输入:

    ValueError: metric '<function <lambda> at 0x7f92ce221938>' not valid for sparse input
    
  • 目前正在尝试使用facebookresearch/pysparnn(看起来很有前途!)。它对实现自己的自定义距离类有一定的规定。然而,在执行之后,构建索引(24小时后仍在运行)花费了相当长的时间,作者似乎认为mentioned

    using distance types from scipy.spatial.distance.cdist (or sklearn distance metrics) is much slower than what is currently in pysparnn.

    我们正在调试sklearn/scipy距离度量的性能问题,方法是编写一些定制的东西。

我想知道是否有其他有效的稀疏矩阵最近邻搜索的实现,它提供了一个自定义的距离度量?
(将在具有64 GB RAM、12核的服务器上执行)

谢谢!在


Tags: 函数距离度量is矩阵scipysklearn次数