3

iPython 笔记本 Python 2

抱怨这条线:

from sklearn.model_selection import train_test_split

为什么模型选择不起作用?

4

1 回答 1

5

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

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

import sklearn

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

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

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

特别是,事实证明问题出在sklearn您使用的版本上;因为model_selection模块在sklearn版本中可用0.18+。如果您使用的版本号 ( sklearn.__version__) 低于0.18,那么您将不得不使用旧cross_validation模块而不是model_selection模块:

from sklearn.cross_validation import train_test_split

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

我希望这是有帮助的。

于 2016-10-03T11:44:23.487 回答