Python ImportError:没有名为model_selection的模块
我正在尝试使用Python ImportError:没有名为model_selection的模块,python,scikit-learn,Python,Scikit Learn,我正在尝试使用train\u test\u split函数并编写: from sklearn.model_selection import train_test_split 这导致 ImportError: No module named model_selection 为什么??如何克服呢?你需要学习吗? 如果没有,请执行以下操作: sudo pip install sklearn 安装sklearn后 from sklearn.model_selection import train_
train\u test\u split
函数并编写:
from sklearn.model_selection import train_test_split
这导致
ImportError: No module named model_selection
为什么??如何克服呢?你需要学习吗?
如果没有,请执行以下操作:
sudo pip install sklearn
安装sklearn后
from sklearn.model_selection import train_test_split
工作正常我猜您使用了错误版本的
scikit learn
,类似的情况也被描述过。以前(在v0.18
之前),列车试验分割
位于交叉验证
模块中:
from sklearn.cross_validation import train_test_split
from sklearn.model_selection import train_test_split
但是,现在它位于型号选择
模块中:
from sklearn.cross_validation import train_test_split
from sklearn.model_selection import train_test_split
所以你需要最新的版本
要升级到至少版本0.18
,请执行以下操作:
pip install -U scikit-learn
(或
pip3
,具体取决于您的Python版本)。如果以不同的方式安装,请确保使用其他方法进行更新,例如使用Anaconda时。在@linusg的上一个答案中添加一些信息:
sklearn
保存其所有更改的发布历史记录。考虑不时检查一下。是指向文档的链接
正如您在该版本的文档中所看到的,创建了一个名为model\u selection
的新模块。因此,它在以前的版本中不存在
更新
sklearn
,它就会工作 我在导入GridSearchCV
时遇到了这个问题
刚刚将
sklearn.model_selection
更改为sklearn.grid_search
,正如@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)
更新sklearn
康达更新scikit学习
我在使用Jupyter笔记本时遇到了同样的问题,无论我在Python 3中更新了什么,conda,我都无法进入Jupyter:
import sklearn
print (sklearn.__version__)
0.17.1
显示scikit-learn-0.18.1
最后,我移除了Anaconda3和Jupyter笔记本,重新安装了fresh。我让它工作了
您的sklearn版本太低,
型号选择由0.18.1导入,因此请更新sklearn版本。要安装scikit learn版本18.0,我使用了两个命令:
康达更新scikit学习
pip安装-U scikit学习
但它不起作用。出现问题“无法安装'scikit learn'。这是一个distutils安装的项目,因此我们无法准确确定哪些文件属于它,这将导致仅部分卸载”
最后,我可以使用以下命令安装它:
pip安装--用户--升级scikit learn==0.18.0sklearn 0.20.0的最新稳定版本已列车测试\u拆分处于型号选择中,而不是在交叉验证中
要检查您的sklearn版本:
导入sklearn
打印(sklearn.版本)
0.20.22016年9月下旬,SciKit Learn 0.18发布,代码略有更改。使用SciKit Learn 0.18,列车测试分割功能现在从模型选择导入,而不是交叉验证
from sklearn.cross_validation import train_test_split
已更改为:
from sklearn.model_selection import train_test_split
GridSearchCV也是如此。我突然想到,你至少在最近十个问题中没有接受任何答案。请记住,接受最有帮助的答案将有助于回答者和未来关注您问题的人。这对我不起作用,但Farhard Maleki的解决方案“conda update scikit learn”起了作用。我运行了您给出的pip命令,要求我升级pip会出错。然后我升级了pip和reran,它会告诉我没有必要升级sklearn,我已经有了最新的版本(0.17),甚至认为情况并非如此。不想讨价还价,只是想分享信息。@AlexKinman如果你安装了Python2和Python3,请确保使用“right pip”命令。你确定你没有VENV或是在正确的一个?这听起来很奇怪,你能打开一个Python shell并放入import sklearn
,sklearn
(是的,就是这个词)和sklearn.\uu版本
?尽管它已经为您修复,但了解问题的来源还是很有意思的。sklearn Out[2]:sklearn.\uu版本\uuu Out[3]:“0.18.2”,但这是在我运行了sklearnAnyhow的Conda升级之后,很好,它现在适合您了。我没有使用过那么多的Anaconda,但我想它没有与pip集成。答案已编辑,所有Anaconda用户都会知道:)这起作用了,接受答案的方法没有。谢谢