首页 文章

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

提问于
浏览
1

我正在研究netflix数据集,并试图使用nmslibR包对netflix数据集产生的稀疏矩阵进行一些KNN类型的工作 . 这个包只接受scipy稀疏矩阵作为输入,所以我需要将我的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

    当操作系统中的python配置出现问题时,'attempt to apply non-function'错误是一个已知问题 . 我从Python移植到R的其他Python包也有类似的问题 . 你可以看看here . 您还应该知道nmslibR包使用reticulate包作为Python和R之间的接口,因此必须有similar issues too . 如果错误仍然存在,那么您可以在nmslibR repository中打开一个问题,提供一些示例数据 .

相关问题