У меня есть фрагмент python, который отлично работает для запуска GLMNET на np.array
X и y. Однако, когда X представляет собой разреженную матрицу столбцов из scipy, код дает сбой, поскольку rpy2 не может преобразовать X. Я делаю очевидную ошибку?
MCVE — это:
import numpy as np
from scipy import sparse
from rpy2 import robjects
import rpy2.robjects.packages as rpackages
from rpy2.robjects import numpy2ri
from rpy2.robjects import pandas2ri
if __name__ == "__main__":
X = sparse.rand(5, 20, density=0.1)
y = np.random.randn(5)
numpy2ri.activate()
pandas2ri.activate()
utils = rpackages.importr('utils')
utils.chooseCRANmirror(ind=1)
if not rpackages.isinstalled('glmnet'):
utils.install_packages("glmnet")
glmnet = rpackages.importr('glmnet')
glmnet = robjects.r['glmnet']
glmnet_fit = glmnet(X, y, intercept=False, standardize=False)
И когда я запускаю его, я получаю NotImplementedError
:
Conversion 'py2ri' not defined for objects of type '<class 'scipy.sparse.csc.csc_matrix'>'
Могу ли я предоставить X по-другому? Я был бы удивлен, если бы rpy2 не мог обрабатывать разреженные матрицы.