ImportError: model_selection adlı modül yok


89

train_test_splitFonksiyonu kullanmaya ve yazmaya çalışıyorum :

from sklearn.model_selection import train_test_split

ve bu sebepler

ImportError: No module named model_selection

Neden? Ve nasıl üstesinden gelinir?


2
En azından son on sorunun cevabını kabul etmediğin aklıma geldi. Unutmayın, en yararlı yanıtı kabul etmeniz, yanıtlayana ve gelecekte sorunuza bakan kişilere yardımcı olacaktır.
linusg

Yanıtlar:


181

Sanırım yanlış sürümüne sahipsiniz, scikit-learnbenzer bir durum burada GitHub'da anlatılmıştır . Daha önce (daha önce v0.18), train_test_splitiçinde bulunan cross_validationmodül:

from sklearn.cross_validation import train_test_split

Ancak, şimdi model_selectionmodülde:

from sklearn.model_selection import train_test_split

bu yüzden en yeni sürüme ihtiyacınız olacak.

En az sürüme yükseltmek için 0.18şunları yapın:

pip install -U scikit-learn

(Veya pip3Python sürümünüze bağlı olarak). Farklı bir şekilde yüklediyseniz, örneğin Anaconda'yı kullanırken, güncelleme için başka bir yöntem kullandığınızdan emin olun.


7
Bu benim için işe yaramadı, ancak Farhard Maleki'nin çözümü "conda update scikit-learn" işe yaradı.
Alex Kinman

Verdiğiniz pip komutunu çalıştırdım ve benden pip'i yükseltmemi isteyen bir hata oluştu. Sonra pip ve reran'ı yükselttim ve sklearn'i yükseltmeye gerek olmadığını söylerdi, halihazırda en son sürüme (0.17) sahibim, hatta durumun böyle olmadığını düşündüm. Pazarlık etmeye değil, sadece bilgi paylaşmaya çalışıyorum.
Alex Kinman

@AlexKinman Python 2 ve 3 kuruluysa, "doğru pip" komutunu kullandığınızdan emin olun. Venvlerin olmadığından veya doğru olanın olduğundan emin misin? Bu garip geliyor, bir Python kabuğu açıp import sklearn, sklearn(evet, sadece kelime) ve koyabilir sklearn.__version__misin? Sizin için düzeltilmiş olsa da, sorunun nereden geldiğini bilmek ilginç olacaktır.
linusg

sklearn Out [2]: <'C: \ Users \ XYZ \ AppData \ Local \ Continuum \ Anaconda2 \ lib \ site-packages \ sklearn_ init_ .pyc '> sklearn .__ version__ Out [3] 'den' sklearn 'modülü :' 0.18 .2 ' Ama bu, sklearn'ın Conda yükseltmesini çalıştırmamdan sonra
Alex Kinman

Her neyse, şimdi sizin için çalışıyor. Anaconda'yı çok kullanmadım ama sanırım pip ile bütünleşmiyor. Cevap düzenlendi, tüm Anaconda kullanıcıları bilecek :)
linusg

26

Sklearn'ı güncelle

conda güncellemesi scikit-learn


4
Bu işe yaradı, kabul edilen cevabın yaklaşımı işe yaramadı. Teşekkürler
Alex Kinman

9

İçe aktarırken bu sorunla karşılaştım GridSearchCV.

Sadece değişti sklearn.model_selectionetmek sklearn.grid_search.


6

Jupyter Notebook'u kullanırken aynı sorunu yaşadım, Python 3'te ne güncellediğim önemli değil, conda, Jupyter'e giremedim:

import sklearn
print (sklearn.__version__)
0.17.1

scikit-learn-0.18.1'İ GÖSTERMEK için

Son olarak, Anaconda3 ve Jupyter Notebook'u kaldırdım ve yeniden yükledim. Çalışmasını sağladım.

http://ukitech.blogspot.com/2017/02/sklearnmodelselection.html


5

sklearn var mı değilse, aşağıdakileri yapın:

sudo pip install sklearn

Sklearn'ı kurduktan sonra

from sklearn.model_selection import train_test_split

iyi çalışıyor


3

Scikit-learn 18.0 sürümünü yüklemek için her iki komutu da kullandım:

conda güncellemesi scikit-learn

pip install -U scikit-learn

Ama bu çalışmıyor. "Scikit-learn" yüklenemiyor. Bu bir distutils projesidir ve bu nedenle hangi dosyaların ona ait olduğunu doğru bir şekilde belirleyemiyoruz, bu da yalnızca kısmi bir kaldırmaya yol açacaktır ".

Son olarak, aşağıdaki komutu kullanarak kurabilirim:

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


3

Eylül 2016'nın sonlarında, SciKit Learn 0.18 yayınlandı ve kodda küçük bir değişiklik oldu. SciKit Learn 0.18 ile train_test_split işlevi artık cross_validation yerine model_selection'dan içe aktarılıyor.

from sklearn.cross_validation import train_test_split

şu şekilde değiştirildi:

from sklearn.model_selection import train_test_split

Aynısı GridSearchCV için de oldu.


2

@Linusg'un dediği gibi, bir seçenek çapraz geçerliliği aşağıdaki gibi içe aktarmaktır:

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'ın son Kararlı sürümünde train_test_split, cross_validation altında değil model_selection altında

Sklearn versiyonunuzu kontrol etmek için:

sklearn baskısını içe aktar (sklearn. sürüm ) 0.20.2


1

@Linusg'dan önceki yanıta bazı bilgiler eklemek :

sklearntüm değişikliklerinin yayın geçmişini tutar. Zaman zaman kontrol etmeyi düşünün. İşte dokümantasyonun bağlantısı.

0.18 sürümünün belgelerinde görebileceğiniz gibi, adında yeni bir modül oluşturuldu model_selection. Bu nedenle önceki sürümlerde mevcut değildi.

Güncelleme sklearnve işe yarayacak!


0

Sklearn sürümünüz çok düşük, model_selection0.18.1 itibarıyla içe aktarıldı, bu nedenle lütfen sklearn sürümünü güncelleyin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.