我正在尝试使用train_test_split
函数并编写:
from sklearn.model_selection import train_test_split
这导致
ImportError: No module named model_selection
为什么?以及如何克服?
Answers:
我想您的版本错误scikit-learn
,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时。
import sklearn
,sklearn
(是的,只是这个词)和sklearn.__version__
?即使它已为您解决,也很想知道问题的出处。
使用Jupyter Notebook时,我遇到了同样的问题,无论我用Python 3 conda更新了什么,我都无法使用Jupyter:
import sklearn
print (sklearn.__version__)
0.17.1
显示scikit-learn-0.18.1
最后,我删除了Anaconda3和Jupyter Notebook,然后重新安装。我知道了。
http://ukitech.blogspot.com/2017/02/sklearnmodelselection.html
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也发生了同样的情况。
sklearn 0.20.0的最新稳定版本具有train_test_split在model_selection下,不在 cross_validation下
为了检查您的sklearn版本:
导入sklearn打印(sklearn 版本)0.20.2