我开始使用reticulate
包,它允许在R环境中使用Python,并希望使用sklearn
执行均值移位聚类。所以这是我的尝试:
> library(reticulate)
> np <- import('numpy')
> sklearn <- import('sklearn')
> sklearn.MeanShift <- sklearn$cluster$MeanShift
> x <- matrix(rnorm(20), 10, 2)
> sklearn.MeanShift(x)
Error in py_call_impl(callable, dots$args, dots$keywords) :
Evaluation error: Required version of NumPy not available: installation of Numpy >= 1.6 not found.
正如你所看到的那样,numpy
在调用sklearn
函数时没有找到,而reticulate::import
导入时没有问题。我还检查了我在conda提示符中的numpy
版本,它是1.15.4。 py_numpy_available()
也会返回false。我的reticulate
配置是:
python: C:\Users\jakes\ANACON~1\python.exe
libpython: C:/Users/jakes/ANACON~1/python37.dll
pythonhome: C:\Users\jakes\ANACON~1
version: 3.7.1 (default, Oct 28 2018, 08:39:03) [MSC v.1912 64 bit (AMD64)]
Architecture: 64bit
numpy: [NOT FOUND]
scikit-learn: [NOT FOUND]
python versions found:
C:\Users\jakes\ANACON~1\python.exe
C:\Users\jakes\Anaconda3\python.exe
我该如何解决这个问题?
有关更多信息,请查看this thread。
尝试使用R对象作为参数从python脚本调用函数时,我遇到了同样的错误。显然这是因为Python没有被添加到你的PATH(这是在Anaconda安装期间提出的建议),这可以防止网格在初始化python时发现numpy。在用网格初始化之前将python添加到R中的PATH是解决了我的问题的原因。所以从前面提到的线程:
if(.Platform$OS.type == "windows") Sys.setenv(PATH= paste("C:/Anaconda3/Library/bin",Sys.getenv()["PATH"],sep=";"))
library(reticulate)