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


174

우분투 14.04에서 Python 2.7을 사용하고 있습니다. 다음 명령으로 scikit-learn, numpy 및 matplotlib를 설치했습니다.

sudo apt-get install build-essential python-dev python-numpy \
python-numpy-dev python-scipy libatlas-dev g++ python-matplotlib \
ipython

그러나이 패키지를 가져올 때 :

from sklearn.cross_validation import train_test_split

이 오류를 반환합니다.

ImportError: No module named sklearn.cross_validation

내가 해야하는 것?


sklearn 및 anaconda를 올바르게 설치 한 경우 모듈 이름이 잘못되었을 수 있습니다.
CKM

11
나는 정말로 그것을 반복하고 있지만, 지금부터는 sklearn.model_selection을 사용해야합니다. sklearn 20+ 이후에 cross_validation을 사용할 수 없습니다
Michal

답변:


583

cross_validation하위 모듈 의 이름 변경 및 사용 중단과 관련이 있어야합니다 model_selection. 대체 시도 cross_validationmodel_selection


8
이것은 분명히 선택된 답변이어야합니다
rhys_jsk

이것이 정답입니다. 그것은 효과가있을뿐만 아니라 내 게시물 시점의 투표는 200-4 이상입니다.
Jerry Destremps 19

왜 Sklearn 개발자가 이전 버전과의 호환성을 위해 별칭을 넣지 않았습니까? 또한 해당 이전 버전의 문서에는이 리 팩터 ( scikit-learn.org/0.16/modules/generated/…) 가 표시되어야합니다 .
flow2k

매력처럼 일했다
omah94

139

train_test_split은 이제 model_selection에 있습니다. 그냥 입력하십시오 :

from sklearn.model_selection import train_test_split

작동해야한다


43

교차 선택이 더 이상 활성화되지 않은 것 같습니다. 대신 모델 선택을 사용해야합니다. 당신은 그것을 실행하도록 쓸 수 있습니다from sklearn.model_selection import train_test_split

그게 다야.


이것이 답변입니다. 당신은 굉장합니다.
Biswajit Panday

35

Anaconda가 설치되어 있는지 확인한 다음 conda사용하여 virtualenv를 작성하십시오 . 이렇게하면 모든 수입품이 작동합니다

Python 2.7.9 |Anaconda 2.2.0 (64-bit)| (default, Mar  9 2015, 16:20:48) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://binstar.org
>>> from sklearn.cross_validation import train_test_split

아니요, 아나콘다를 설치해야합니까?
arthurckl 2016 년

글쎄, 나는 당신이 그것을 설치하는 것이 좋습니다. 그러나 당신은 또한 sudo apt-get install python-sklearn을 시도 할 수 있습니다.
Richard Rublev 2016 년

7
@DimaLituiev의 대답은 실제로 정답입니다. 이 문제는 대부분 패키지가 아닌 이름 변경과 관련이 있습니다.
Amrinder Arora

2
반드시 필요한 것은 아닙니다. 이름이 바뀐 하나의 패키지에 대해서만 새 환경을 설치할 것을 제안합니다.이 솔루션은 과잉이라고 말합니다. Dima의 솔루션은 정답으로 표시되어야합니다
MuhsinFatih at 21:19

그가 "가져 오기 가져 오기"가 먼저 작동했는지 아닌지에 대한 문제가 해결되어야한다고 생각합니다. 작동하면 이름 지정 문제가 아닐 수 있습니다.
ju.

24

sklearn.cross_validation 이제로 변경되었습니다 sklearn.model_selection

그냥 사용

from sklearn.model_selection import train_test_split

나는 그것이 효과가 있다고 생각합니다.



15

sklearn.cross_validation의 지원 중단으로 인한 것일 수 있습니다. sklearn.cross_validation을 sklearn.model_selection으로 바꾸십시오.

Ref- https://github.com/amueller/scipy_2015_sklearn_tutorial/issues/60


1
귀하의 답변이 동일한 스레드에서 이전에 제공된 것과 동일합니다. 답변을 개선 할 수 있다고 생각 되면 동일한 질문에 대한 새로운 답변을 작성하는 대신 편집 을 고려 하십시오.
Johan

@Johan 다른 답변을 보지 못한 방법. 원하는 경우 답변을 삭제할 수 있습니다.
nantitv

12

데이터 세트를 학습 세트 및 테스트 세트로 분할

from sklearn.model_selection import train_test_split

2
ayat ullah sony의 답변과 동일한 솔루션입니다.
Eric Aya

9

과거 : from sklearn.cross_validation (이 패키지는 0.20부터 0.18 버전에서 더 이상 사용되지 않습니다.from sklearn import model_selection ).

선물: from sklearn import model_selection

예 2 :

과거 : from sklearn.cross_validation import cross_val_score (더 이상 사용되지 않는 버전 0.18)

선물 : from sklearn.model_selection import cross_val_score


7

sklearn.cross_validation 이제로 변경되었습니다 sklearn.model_selection

그냥 변경

sklearn.cross_validation

sklearn.model_selection

4

이런 식으로 코드를 변경

# from sklearn.cross_validation import train_test_split
from sklearn.model_selection import train_test_split

4

다양한 버전을 실행해야하는 코드가있는 경우 다음과 같이 할 수 있습니다.

import sklearn
if sklearn.__version__ > '0.18':
    from sklearn.model_selection import train_test_split
else:
    from sklearn.cross_validation import train_test_split

패키지 버전을 문자열로 비교하기 때문에 이상적이지는 않지만 일반적으로 작동하지만 항상 그렇지는 않습니다. 설치하려는 경우 packaging훨씬 나은 접근 방법입니다.

from packaging.version import parse
import sklearn
if parse(sklearn.__version__) > parse('0.18'):
    from sklearn.model_selection import train_test_split
else:
    from sklearn.cross_validation import train_test_split

2

cross_validation은 얼마 전에 더 이상 사용되지 않습니다. model_selection으로 바꾸십시오.


답변에 더 많은 설명을 추가하여 가치를 높이십시오.
Zeina

2

train_test_split모듈의 일부 sklearn.model_selection이므로 모듈 을 가져와야 할 수도 있습니다.model_selection

암호:

from sklearn.model_selection import train_test_split

0

우리는 scikit-learn을 최신 호환 버전으로 다운 그레이드해야합니다. 그리고 이것은 conda 환경을 활성화 한 후에 수행 할 수 있습니다. scikit-learn을 다운 그레이드하려면 다음 명령을 사용하십시오.

pip uninstall scikit-learn
pip install scikit-learn==0.19.2

또는

scikit-learn을 다운 그레이드하고 싶지 않을 때. 그런 다음 우리는 "cross_validation"이름이 최신 버전의 scikit-learn에서 더 이상 사용되지 않으며 새로운 아나콘다 버전에서 "model_selection"으로 대체되었다는 것을 알고있었습니다. 따라서 경고 또는 오류가 발생할 수 있습니다.

이를 피하려면 다음을 교체하면됩니다.

from sklearn.cross_validation import train_test_split

from sklearn.model_selection import train_test_split 

희망이 문제를 해결하는 데 도움이 될 것입니다.

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