webentwicklung-frage-antwort-db.com.de

ImportError: Kein Modul mit dem Namen model_selection

Ich versuche, die train_test_split-Funktion zu verwenden und schreibe:

from sklearn.model_selection import train_test_split

und das verursacht 

ImportError: No module named model_selection

Warum? Und wie überwinden?

64
Dims

Ich denke, Sie haben die falsche Version von scikit-learn, eine ähnliche Situation wurde hier auf GitHub beschrieben. Zuvor (vor v0.18) befand sich train_test_split im Modul cross_validation:

from sklearn.cross_validation import train_test_split

Jetzt ist es im model_selection Modul:

from sklearn.model_selection import train_test_split

sie benötigen also die neueste Version.

Um mindestens die Version 0.18 zu aktualisieren, führen Sie folgende Schritte aus:

pip install -U scikit-learn

(Oder pip3, abhängig von Ihrer Python-Version). Wenn Sie es auf eine andere Weise installiert haben, stellen Sie sicher, dass Sie zum Aktualisieren eine andere Methode verwenden, beispielsweise bei der Verwendung von Anaconda.

126
linusg

Sklearn aktualisieren

conda update scikit-learn

20
Farhad Maleki

Dieses Problem ist beim Importieren von GridSearchCV aufgetreten.

sklearn.model_selection wurde in sklearn.grid_search geändert.

7
curry_xyd

Ich hatte das gleiche Problem bei der Verwendung von Jupyter Notebook, egal was ich in Python 3 aktualisiert habe, Conda, ich konnte nicht in Jupyter bekommen:

import sklearn
print (sklearn.__version__)
0.17.1

zu zeigen, scikit-learn-0.18.1 

Schließlich entfernte ich Anaconda3 und Jupyter Notebook und installierte frisch. Ich habe es geschafft zu arbeiten.

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

5
Uki D. Lucas

hast du sklearn?

Sudo pip install sklearn

Nach der Installation von sklearn

from sklearn.model_selection import train_test_split

funktioniert gut

3
Alex L

Wie @linusg sagte, ist eine Option nur die Kreuzvalidierung wie folgt zu importieren:

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
MCardus

Hinzufügen von Info zur vorherigen Antwort von @linusg:

sklearn speichert eine Versionshistorie aller Änderungen. Denken Sie daran, es von Zeit zu Zeit zu überprüfen. Hier ist der Link zur Dokumentation.

Wie Sie in der Dokumentation zur Version 0.18 sehen können, wurde ein neues Modul mit dem Namen model_selection erstellt. In früheren Versionen existierte es daher nicht.

Update sklearn und es wird funktionieren!

1
MMF

Um die Version 18.0 von scikit-learn zu installieren, habe ich beide Befehle verwendet:

conda update scikit-learn

pip install -U scikit-learn

Aber es funktioniert nicht. Es gab ein Problem "" scikit-learn "kann nicht installiert werden. Es ist ein distutils installiertes Projekt, und daher können wir nicht genau bestimmen, welche Dateien dazu gehören und die nur zu einer teilweisen Deinstallation führen.

Schließlich kann ich es mit folgendem Befehl installieren:

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

1
Minh Vo

Ende September 2016 wurde SciKit Learn 0.18 veröffentlicht, und der Code wurde geringfügig geändert. Mit SciKit Learn 0.18 wird die Funktion train_test_split jetzt aus model_selection anstelle von cross_validation importiert.

from sklearn.cross_validation import train_test_split

wurde geändert in:

from sklearn.model_selection import train_test_split

Gleiches gilt auch für GridSearchCV.

Vielen Dank an alle!

1
Paras Patidar

Die neueste stabile Version von sklearn 0.20.0 hat train_test_split ist unter model_selection nicht unter cross_validation

So überprüfen Sie Ihre Sklearn-Version:

import sklearn print (sklearn. version ) 0.20.2

0

Ihre Sklearn-Version ist zu niedrig. model_selection wird von 0.18.1 importiert. Aktualisieren Sie daher die Sklearn-Version.

0
Changyuan Chen