我正在尝试在Anaconda上通过Spyder运行Skikit学习

C:\Anaconda3>conda --version
conda 4.3.4
C:\Anaconda3>python --version
Python 3.5.2 :: Anaconda 4.0.0 (64-bit)
Spyder 2.3.8


我尝试执行以下操作:

print("Scikit-Learn", sklearn.__version__)
NameError: name 'sklearn' is not defined
from sklearn.model_selection import *
from ..utils.fixes import rankdata
ImportError: cannot import name 'rankdata'
Errors


不知道为什么会出现此错误,如Anaconda所示,该软件包为当前软件包,但是当我运行Spyder时,它给出了以上错误。

最佳答案

当您使用水蟒时,请尝试:

conda update scikit-learn


Conda将尝试处理依赖关系,并且可能会更新其他软件包。

如果这不起作用,则<Anaconda_basedir>\lib\python3.5\site-packages\sklearn\utils中的fixs.py文件中有一行if sp_version < (0,13, 0):,如果scipy的版本低于0.13.0,则该行会限制rankdata的导入。

由于某些原因,如果版本> 0.13.0,则应使用rankdata中的scipy.stats。但是,至少就我而言,不是,我要做的是添加and False以便从rankdata获取scipy

最后一行是:


...
if sp_version < (0, 13, 0) and False:
    def rankdata(a, method='average'):
...

10-08 17:47