给定大小为NxN(N = 900,000)的稀疏矩阵(使用scipy.sparse.csr_matrix
创建),我试图为testset中的每一行找到前k个最近邻居(来自输入矩阵的稀疏行向量) )使用自定义距离度量。基本上,输入矩阵的每一行代表一个项目,对于testset中的每个项目(行),我需要找到它的知识。
尝试:
尝试使用sklearn.neighbors.NearestNeighbor
。但是,在处理稀疏矩阵时,sklearn似乎不会将可调用的度量函数作为输入:
ValueError: metric '<function <lambda> at 0x7f92ce221938>' not valid for sparse input
目前正在尝试使用facebookresearch/pysparnn(看起来非常有前途!)。它有一定的条件用于实现自己的自定义距离类。但是,执行后,构建索引需要很长时间(24小时后仍然运行)和作者mentioned,似乎
使用
scipy.spatial.distance.cdist
(或sklearn距离指标)中的距离类型比目前在pysparnn中的距离慢得多。
我们正在通过编写自定义内容来调试sklearn / scipy距离指标的性能问题。
我想知道是否有其他有效的稀疏矩阵最近邻搜索实现,它提供了使用自定义距离度量的方法?
(将在具有64 GB RAM,12个内核的服务器上执行)
谢谢!