我正在尝试使用train_test_split
函数并写:
from sklearn.model_selection import train_test_split
,这会导致
ImportError: No module named model_selection
为什么呢?以及如何克服?
答案 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)
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)
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也发生了同样的事情。
谢谢大家!