iPython (python 2) - ImportError: No module named model_selection
iPython (python 2) - ImportError: No module named model_selection
iPython 笔记本
Python2
抱怨这条线:
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 版本的站点包,那么首先安装包的方式就有问题。在这种情况下,您可能需要更新或重新安装它。
具体到这个,原来是你使用的sklearn
版本的问题;因为 sklearn
中的 model_selection
模块在版本 0.18+
中可用。如果您使用的版本号 (sklearn.__version__
) 低于 0.18
,那么您将不得不使用旧的 cross_validation
模块而不是 model_selection
模块:
from sklearn.cross_validation import train_test_split
您也可以使用首选的包管理系统升级到最新版本的包。
希望对您有所帮助。
iPython 笔记本 Python2
抱怨这条线:
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 版本的站点包,那么首先安装包的方式就有问题。在这种情况下,您可能需要更新或重新安装它。
具体到这个,原来是你使用的sklearn
版本的问题;因为 sklearn
中的 model_selection
模块在版本 0.18+
中可用。如果您使用的版本号 (sklearn.__version__
) 低于 0.18
,那么您将不得不使用旧的 cross_validation
模块而不是 model_selection
模块:
from sklearn.cross_validation import train_test_split
您也可以使用首选的包管理系统升级到最新版本的包。
希望对您有所帮助。