最近在centos 6.5上使用 sklearn做一些数据处理,安装的sklearn 版本为0.16.1,python版本为2.7.6,numpy版本为:1.9.2,scipy版本为:0.7.0。

一、

在引入svm模块:from sklearn import svm,的时候,会报错:

ImportError: cannot import name factorial

从错误追踪来看是scipy模块的问题:

“File “/usr/lib/python2.7/site-packages/scipy/interpolate/polyint.py”, line 2, in <module>from scipy import factorial”

与sklearn的安装指导对比发现scipy版本太低,于是升级到0.14.0,但是问题依旧。后来在这里找到一个解决办法:

将scipy的polyint.py中的“from scipy import factorial”改为:“from scipy.misc import factorial”

这是因为安装scipy的时候,会用到numpy,而numpy在分配模块的时候出现了问题,factorial原本在scipy.misc下,结果错误地设置成了scipy。

二、

解决了factorial引入的问题,又出现了新问题:

ImportError: cannot import name line_search_wolfe2

提示信息为:

”File “/usr/local/lib/python2.7/site-packages/sklearn/utils/optimize.py”, line 18, in <module>from scipy.optimize.linesearch import line_search_wolfe2, line_search_wolfe1“

于是找到scipy下的linesearch文件,发现的确没有line_search_wolfe2和line_search_wolfe1,但是原本的scipy安装文件中linesearch的是包含这两个函数的,根据上个问题,推测应该还是安装scipy用到numpy时出现的问题,但是scipy已经升级过了,不应该是scipy的问题。

对比在windows上python版本为2.7.6,numpy版本为:1.8.2,scipy版本为:0.14.0,于是卸载numpy 1.9.2,安装numpy1.8.2,再卸载重装scipy 0.14.0,问题一、二均解决。

由此看来,应该是numpy版本比较高,导致scipy安装时出错。

参考:https://code.google.com/p/pymf/issues/detail?id=3

× 请打赏~
打赏二维码