iPython(python 2) - ImportError:没有名为model_selection的模块

时间:2016-10-02 19:37:35

标签: python scikit-learn ipython sklearn-pandas

iPython Notebook Python 2

抱怨这条线:

from sklearn.model_selection import train_test_split

为什么模型选择无效?

1 个答案:

答案 0 :(得分:5)

为了解决此问题,您需要先了解是否要导入实际的sklearn包,而不只是在工作目录中保存名称为sklearn.py的某个脚本。 Python导入模块的方式有点类似于在命名空间中找到变量的方式(LocalEnclosedGlobalBuilt-in)。在这种情况下,Python将首先查看当前目录然后site-packages开始导入模块。如果它在当前工作目录中查找并找到与您尝试导入的模块同名的python脚本,那么它将导入该脚本而不是实际模块。

您通常可以通过检查__file____path__属性来确定是否导入了实际模块:

import sklearn

print(sklearn.__file__)
print(sklearn.__path__)

查看这些打印语句的输出将告诉您导入的包是否是您所使用的模块,或者只是某个脚本位于工作目录中的某个位置。如果,如果输出没有指向Python版本的site-packages,那么您已经在某个地方导入了一些不是模块本身的脚本。您的快速解决方法是先退出控制台,重命名.py脚本及其编译版本(.pyc文件),然后返回控制台再试一次。

但是,如果输出指向python版本的site-packages,那么首先安装软件包的方式有问题。在这种情况下,您可能需要更新或重新安装它。

特别是,事实证明问题在于您使用的sklearn版本;因为model_selection中的sklearn模块在​​版本0.18+中可用。如果您使用的版本号(sklearn.__version__)低于0.18,则必须使用旧的cross_validation模块而不是model_selection模块:< / p>

from sklearn.cross_validation import train_test_split

您也可以使用首选的包管理系统升级到最新版本的包。

我希望这有用。