iPython(python 2)-ImportError:没有名为model\u selection的模块

2024-06-12 22:15:51 发布

您现在位置:Python中文网/ 问答频道 /正文

iPython笔记本 Python2

抱怨这句台词:

from sklearn.model_selection import train_test_split

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


Tags: from模型testimportmodelipython笔记本train
1条回答
网友
1楼 · 发布于 2024-06-12 22:15:51

为了解决这个问题,您需要首先查明是否要导入实际的sklearn包,而不仅仅是保存在工作目录某处的名为sklearn.py的脚本。Python导入模块的方式与在其名称空间中查找变量的方式有些相似(LocalEnclosedGlobalBuilt-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

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

我希望这对你有帮助。

相关问题 更多 >