ImportError:没有名为model_selection的模块

时间:2016-11-20 13:21:42

标签: python scikit-learn

我正在尝试使用train_test_split函数并写:

from sklearn.model_selection import train_test_split

,这会导致

ImportError: No module named model_selection

为什么呢?以及如何克服?

11 个答案:

答案 0 :(得分:145)

我猜你的scikit-learn版本错误,类似的情况被描述为here on GitHub。以前(v0.18之前),train_test_split位于cross_validation模块中:

from sklearn.cross_validation import train_test_split

但是,现在它在model_selection模块中:

from sklearn.model_selection import train_test_split

因此您需要最新版本。

要升级到至少版本0.18,请执行:

pip install -U scikit-learn

(或pip3,具体取决于您的Python版本)。如果您以不同的方式安装它,请确保使用其他方法进行更新,例如使用Anaconda时。

答案 1 :(得分:23)

更新sklearn

  

conda update scikit-learn

答案 2 :(得分:8)

导入GridSearchCV时遇到此问题。

刚刚将sklearn.model_selection更改为sklearn.grid_search

答案 3 :(得分:6)

我在使用Jupyter Notebook时遇到了同样的问题,无论我在Python 3中更新了什么,conda,我都无法进入Jupyter:

import sklearn
print (sklearn.__version__)
0.17.1

到SHOW scikit-learn-0.18.1

最后,我删除了Anaconda3和Jupyter笔记本并重新安装了新的。我得到了它的工作。

http://ukitech.blogspot.com/2017/02/sklearnmodelselection.html

答案 4 :(得分:4)

你有sklearn吗? 如果没有,请执行以下操作:

sudo pip install sklearn

安装sklearn后

from sklearn.model_selection import train_test_split

工作正常

答案 5 :(得分:3)

要安装scikit-learn 18.0版,我使用了两个命令:

conda更新scikit学习

pip install -U scikit-learn

但是它不起作用。出现问题“无法安装'scikit-learn'。这是一个distutils安装的项目,因此我们无法准确确定属于该文件的哪些文件,这只会导致部分卸载”。

最后,我可以使用以下命令进行安装:

pip install --user --upgrade scikit-learn == 0.18.0

答案 6 :(得分:2)

正如@linusg所说,一个选项就是导入交叉验证,如下所示:

from sklearn import cross_validation
X_train,X_test,y_train,y_test = cross_validation.train_test_split(X,y,test_size=0.3)

答案 7 :(得分:1)

将一些信息添加到@linusg的上一个答案:

sklearn会保留所有更改的发布历史记录。想想不时检查一下。 Here是文档的链接。

正如您在版本0.18的文档中所看到的,创建了一个名为model_selection的新模块。因此,它在以前的版本中并不存在。

更新sklearn,它会有效!

答案 8 :(得分:1)

sklearn 0.20.0的最新稳定版本具有 train_test_split 在model_selection下,不在 cross_validation

为了检查您的sklearn版本:

导入sklearn 打印(sklearn。版本) 0.20.2

答案 9 :(得分:0)

您的sklearn版本过低,model_selection由0.18.1导入,因此请更新sklearn版本。

答案 10 :(得分:0)

2016年9月下旬,SciKit Learn 0.18发布了,代码略有变化。现在,使用SciKit Learn 0.18,可以从model_selection而不是cross_validation导入train_test_split函数。

from sklearn.cross_validation import train_test_split

已更改为:

from sklearn.model_selection import train_test_split

GridSearchCV也发生了同样的事情。

谢谢大家!