我已经编写好了一个在Python中完全按照我的预期工作的函数,但当我尝试在R中运行它时,我遇到了reticulate的问题。我已经排除了问题并将其缩小为这个问题。我在Python中有这个函数:
def get_largest_eigenvalue(inc_mat):
eigen_val = scipy.sparse.linalg.eigs(inc_mat, k = 1)
eigen_val = eigen_val[0] / inc_mat.shape[0]
return eigen_val
基本上,这个函数接收一个csr_matrix并返回其最大特征值。它应该适用于任何csr_matrix。当我使用reticulate运行此代码时,我会出现错误,解决这个问题将解决我的更大问题。
在reticulate中运行此代码,您可以执行以下操作:
library(reticulate)
use_virtualenv("default")
我之前已经运行了这段代码在虚拟环境中安装scipy
virtualenv_install("default", c("scipy"))
我随后使用了
source_python("file_name.py")
为了加载我所有的Python函数,包括上面那个函数。我已经成功加载了所有其他函数,除了上面那个函数。当我尝试运行它时,会出现以下错误信息:
“py_call_impl(callable, dots$args, dots$keywords)中的错误: AttributeError: module 'scipy.sparse' has no attribute 'linalg'”
在这方面,我有些不知所措,我尝试过运行类似下面这样的代码:
virtualenv_install("default", c("scipy.sparse"))
但这会导致更多的错误,而且不起作用。非常感谢任何帮助!谢谢!