Преобразование из dgCMatrix / dgRMatrix в скудную разреженную матрицу - PullRequest
0 голосов
/ 02 июля 2018

Я работаю над набором данных netflix и пытаюсь использовать пакет nmslibR для выполнения некоторой работы типа KNN над разреженной матрицей, которая получается из набора данных netflix. Этот пакет принимает только скудно разреженные матрицы в качестве входных данных, поэтому мне нужно преобразовать мою R разреженную матрицу в этот формат. Когда я пытаюсь это сделать, я получаю следующую ошибку. dfm2 - это dgCMatrix объемом 1,1 Гб, я также пытался выполнить его на dgRMatrix с точно такой же ошибкой.

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

Я не знаю, как предоставить хороший примерный набор данных для моей проблемы, разреженная матрица, с которой я работаю, составляет 1,1 ГБ, поэтому, если у кого-то есть предложение, как я могу облегчить мне задачу, пожалуйста, дайте мне знать. Я также был бы открыт для прослушивания других пакетов, которые будут выполнять функции типа KNN / KNN в r для разреженных матриц.

Edit:

Я использую следующий код для генерации образца разреженной матрицы в формате dgCMatrix и пытаюсь преобразовать ее в точную разреженную матрицу и получаю следующую ошибку.

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 голосов
/ 02 июля 2018

Ошибка 'попытка применить не-функцию' - известная проблема, когда что-то не так с конфигурацией python в операционной системе. Есть аналогичные проблемы для других пакетов Python, которые я портировал с Python на R. Вы можете посмотреть здесь . Вы также должны знать, что пакет nmslibR использует пакет reticulate для интерфейса между Python и R, поэтому должны быть похожие проблемы тоже . Если ошибка не устраняется, вы можете открыть проблему в nmslibR репозитории , предоставив некоторые примеры данных.

...