从dgCMatrix / dgRMatrix转换为Scipy稀疏矩阵

时间:2018-07-02 13:24:07

标签: r scipy sparse-matrix knn

我正在研究netflix数据集,并尝试使用nmslibR包对由netflix数据集产生的稀疏矩阵进行一些KNN类型的工作。该程序包仅接受稀疏矩阵作为输入,因此我需要将R稀疏矩阵转换为该格式。当我尝试这样做时,出现以下错误。 dfm2是一个1.1 gb的dgCMatrix,我也曾在dgRMatrix上尝试过它,但错误完全相同。

dfm3<-TO_scipy_sparse(dfm2)
Error in TO_scipy_sparse(dfm2) : attempt to apply non-function

我不知道如何为我的问题提供良好的样本数据集,我正在使用的稀疏矩阵为1.1 gb,所以如果有人对我如何可以更轻松地帮助我提出建议,请让我知道。我也乐于听到其他将在r中执行KNN / KNN类型函数以处理稀疏矩阵的程序包。

编辑:

我使用以下代码生成dgCMatrix格式的样本稀疏矩阵,并尝试将其转换为sci py稀疏矩阵,并得到以下错误。

library(Matrix)
library(nmslibR)
sparse<-Matrix(sample(c(1,2,3,4,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),10000,
               replace=T),
               ncol=50,
               byrow=T)
dfm3 <- TO_scipy_sparse(sparse)
Error in TO_scipy_sparse(sparse) : attempt to apply non-function

要回答有关稀疏是否为dgCMatrix的问题:

str(sparse)
Formal class 'dgCMatrix' [package "Matrix"] with 6 slots
  ..@ i       : int [1:2414] 0 6 9 10 13 20 22 23 25 49 ...
  ..@ p       : int [1:51] 0 45 92 146 185 227 277 330 383 435 ...
  ..@ Dim     : int [1:2] 200 50
  ..@ Dimnames:List of 2
  .. ..$ : NULL
  .. ..$ : NULL
  ..@ x       : num [1:2414] 4 1 1 2 5 3 2 5 3 5 ...
  ..@ factors : list()

1 个答案:

答案 0 :(得分:0)

当操作系统中的python配置出现问题时,“尝试应用非功能” 错误是一个已知问题。我从Python移植到R的其他Python软件包也存在类似的问题。您可以看看here。 您还应该知道, nmslibR 软件包使用reticulate软件包作为Python和R之间的接口,因此必须有similar issues too。如果错误仍然存​​在,则可以在nmslibR repository中提供一些示例数据来打开问题。