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



ippython NotebookPython 2

抱怨这一行:

from sklearn.model_selection import train_test_split

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

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

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

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

查看这些print语句的输出将告诉您导入的包是否是您要寻找的模块,还是只是工作目录中的某个脚本。如果输出没有指向Python版本的site-packages,那么您已经在某处导入了一些脚本,而不是模块本身。您的快速修复方法是首先退出控制台,重新命名.py脚本及其编译版本(.pyc文件),然后返回控制台并再次尝试。

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

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

from sklearn.cross_validation import train_test_split

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

相关内容

  • 没有找到相关文章