iPython (python 2) - ImportError: No module named model_selection
Posted
技术标签:
【中文标题】iPython (python 2) - ImportError: No module named model_selection【英文标题】: 【发布时间】:2017-02-10 18:22:42 【问题描述】:iPython 笔记本 Python 2
抱怨这条线:
from sklearn.model_selection import train_test_split
为什么模型选择不起作用?
【问题讨论】:
您的工作目录中是否有一个名为sklearn.py
的脚本?也许您是从该脚本而不是实际的 sklearn
包中导入的。
据我所知没有
运行import sklearn; print(sklearn.__file__)
并查看输出。如果输出指向您的python 版本的site-packages
,那么您安装sklearn
的方式有问题。在这种情况下,您可能需要重新安装它。否则,如果您的输出不是site-packages
,那么您将在某个不是模块本身的地方导入一些脚本。在这种情况下,您的快速解决方法是先退出控制台,重命名该脚本,然后返回控制台再试一次。
输出:/Users/******/anaconda/lib/python2.7/site-packages/sklearn/__init__.pyc
除了重新安装软件包之外,我建议检查软件包版本以确保它是最新的。如果您使用的版本号 (sklearn.__version__
) 低于 0.18
,那么您将不得不使用旧的 cross_validation
模块而不是 model_selection
模块。基本上from sklearn.cross_validation import train_test_split
.
【参考方案1】:
为了解决这个问题,您需要首先确定您是否正在导入实际的 sklearn
包,而不仅仅是保存在工作目录某处的名为 sklearn.py
的脚本。 Python 导入模块的方式有点类似于它在命名空间中查找变量的方式(Local
、Enclosed
、Global
、Built-in
)。在这种情况下,Python 将首先查看当前目录,然后查看site-packages
来开始导入模块。如果它在当前工作目录中查找并找到与您尝试导入的模块同名的 python 脚本,那么它将导入该脚本而不是实际模块。
您通常可以通过检查其__file__
或__path__
属性来确定实际模块是否已导入:
import sklearn
print(sklearn.__file__)
print(sklearn.__path__)
查看这些打印语句的输出将告诉您导入的包是您要使用的模块,还是只是位于您工作目录某处的某个脚本。如果输出不指向您的 Python 版本的site-packages
,那么您已经在某个不是模块本身的地方导入了一些脚本。您的快速解决方法是先退出控制台,重命名 .py
脚本及其编译版本(.pyc
文件),然后返回控制台重试。
但是,如果输出指向您的 python 版本的站点包,那么首先安装包的方式有问题。在这种情况下,您可能需要更新或重新安装它。
特别是这个,原来问题出在你使用的sklearn
的版本上;因为sklearn
中的model_selection
模块在0.18+
版本中可用。如果您使用的版本号 (sklearn.__version__
) 低于 0.18
,那么您将不得不使用旧的 cross_validation
模块而不是 model_selection
模块:
from sklearn.cross_validation import train_test_split
您也可以使用您喜欢的包管理系统升级到最新版本的包。
我希望这会有所帮助。
【讨论】:
以上是关于iPython (python 2) - ImportError: No module named model_selection的主要内容,如果未能解决你的问题,请参考以下文章