ImportError : model_selection이라는 모듈이 없습니다.


89

train_test_split함수 를 사용 하고 작성 하려고합니다 .

from sklearn.model_selection import train_test_split

그리고 이것은

ImportError: No module named model_selection

왜? 그리고 극복하는 방법?


2
당신이 적어도 지난 10 개의 질문에서 어떤 대답도 받아들이지 않았다는 것이 방금 나에게 일어났습니다. 가장 유용한 답변을 수락하면 답변자와 향후 질문을 보는 사람들에게 도움이됩니다.
linusg

답변:


181

나는 당신이 잘못된 버전을 가지고 있다고 생각합니다 scikit-learn. 비슷한 상황이 여기 GitHub 에 설명 되어 있습니다 . 이전 (이전 v0.18) train_test_splitcross_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

(또는 pip3Python 버전에 따라). 다른 방법으로 설치 한 경우에는 예를 들어 Anaconda를 사용할 때 다른 방법을 사용하여 업데이트해야합니다.


7
이것은 나를 위해 작동하지 않았지만 Farhard Maleki의 솔루션 인 "conda update scikit-learn"은 작동했습니다.
Alex Kinman

내가 준 pip 명령을 실행했는데 pip를 업그레이드하라는 오류가 발생했습니다. 그런 다음 pip를 업그레이드하고 다시 실행하면 sklearn을 업그레이드 할 필요가 없다는 메시지가 표시됩니다. 이미 최신 버전 (0.17)이 있습니다. 흥정을 시도하지 않고 정보를 공유하려고합니다.
Alex Kinman

@AlexKinman Python 2 3이 설치되어있는 경우 "right pip"명령을 사용해야합니다. Venv가 없거나 올바른 선택입니까? 이상하게 들립니다. Python 셸을 열고 import sklearn, sklearn(예, 단어 만) 및 sklearn.__version__? 그것은 당신을 위해 수정되었지만 문제의 출처를 아는 것은 흥미로울 것입니다.
linusg

sklearn Out [2] : <모듈 'sklearn'from 'C : \ Users \ XYZ \ AppData \ Local \ Continuum \ Anaconda2 \ lib \ site-packages \ sklearn_ init_ .pyc'> sklearn .__ version__ Out [3] : '0.18 0.2 ' 그러나 내가 CONDA이 sklearn의 업그레이드를 실행 한 후입니다
알렉스 Kinman

어쨌든, 이제 잘 작동합니다. Anaconda를 많이 사용하지 않았지만 pip와 통합되지 않는 것 같습니다. 모든 아나콘다 사용자 : 알 편집 답변
linusg


9

가져올 때이 문제가 발생했습니다 GridSearchCV.

로 변경 sklearn.model_selection되었습니다 sklearn.grid_search.


6

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


5

당신은 sklearn이 있습니까? 그렇지 않은 경우 다음을 수행하십시오.

sudo pip install sklearn

sklearn 설치 후

from sklearn.model_selection import train_test_split

잘 작동


3

scikit-learn 버전 18.0을 설치하기 위해 두 명령을 모두 사용했습니다.

conda 업데이트 scikit-learn

pip 설치 -U scikit-learn

그러나 작동하지 않습니다. " 'scikit-learn'을 설치할 수 없습니다. distutils가 설치된 프로젝트이므로 부분 제거 만 발생하는 파일이 어떤 파일에 속하는지 정확하게 확인할 수 없습니다."라는 문제가있었습니다.

마지막으로 다음 명령을 사용하여 설치할 수 있습니다.

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


3

2016 년 9 월 말 SciKit Learn 0.18이 출시되었고 코드가 약간 변경되었습니다. SciKit Learn 0.18에서는 이제 train_test_split 함수를 cross_validation 대신 model_selection에서 가져옵니다.

from sklearn.cross_validation import train_test_split

다음으로 변경되었습니다.

from sklearn.model_selection import train_test_split

GridSearchCV에서도 마찬가지입니다.


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)

2

sklearn 0.20.0의 최신 안정 릴리스에는 train_test_split이 cross_validation 이 아닌 model_selection에 있습니다.

sklearn 버전을 확인하려면 :

import sklearn print (sklearn. 버전 ) 0.20.2


1

@linusg의 이전 답변에 몇 가지 정보추가합니다 .

sklearn모든 변경 사항의 릴리스 내역을 유지합니다. 수시로 확인하십시오. 다음 은 문서에 대한 링크입니다.

버전 0.18 에 대한 문서에서 볼 수 있듯이 라는 새 모듈이 생성되었습니다 model_selection. 따라서 이전 버전에는 존재하지 않았습니다.

업데이트 sklearn하면 작동합니다!


0

sklearn 버전이 너무 낮 model_selection습니다. 0.18.1까지 가져 왔으므로 sklearn 버전을 업데이트하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.