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