ImportError: Kein Modul mit dem Namen model_selection

89

Ich versuche, train_test_splitFunktion zu verwenden und zu schreiben:

from sklearn.model_selection import train_test_split

und das verursacht

ImportError: No module named model_selection

Warum? Und wie zu überwinden?

Dims
quelle
2
Mir ist gerade aufgefallen, dass Sie in mindestens Ihren letzten zehn Fragen keine Antworten akzeptiert haben. Denken Sie daran, dass das Akzeptieren der hilfreichsten Antwort dem Antwortenden und den Personen, die Ihre Frage in Zukunft betrachten, hilft.
Linusg

Antworten:

178

Ich denke du hast die falsche Version von scikit-learn, eine ähnliche Situation wurde hier auf GitHub beschrieben . Zuvor (vorher v0.18) train_test_splitbefand sich im cross_validationModul:

from sklearn.cross_validation import train_test_split

Jetzt ist es jedoch im model_selectionModul:

from sklearn.model_selection import train_test_split

Sie benötigen also die neueste Version.

Um auf mindestens die Version zu aktualisieren 0.18, gehen Sie wie folgt vor:

pip install -U scikit-learn

(Oder pip3abhä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, z. B. bei Verwendung von Anaconda.

linusg
quelle
7
Dies hat bei mir nicht funktioniert, jedoch bei Farhard Malekis Lösung "conda update scikit-learn".
Alex Kinman
Ich habe den von Ihnen angegebenen pip-Befehl ausgeführt, und es wurde ein Fehler ausgegeben, der mich aufforderte, pip zu aktualisieren. Dann habe ich pip und reran aktualisiert, und es würde sich herausstellen, dass sklearn nicht aktualisiert werden musste. Ich habe bereits die neueste Version (0.17), obwohl ich dachte, dass dies nicht der Fall ist. Nicht versuchen zu feilschen, sondern nur Informationen zu teilen.
Alex Kinman
@AlexKinman Wenn Sie Python 2 und 3 installiert haben, stellen Sie sicher, dass Sie den Befehl "right pip" verwenden. Bist du sicher, dass du keine Venvs hast oder in der richtigen bist? Das klingt seltsam, könnten Sie ein Python - Shell öffnen und setzen in import sklearn, sklearn(yep, nur das Wort) und sklearn.__version__? Obwohl es für Sie behoben ist, wäre es interessant zu wissen, woher das Problem stammt.
Linusg
sklearn Out [2]: <Modul 'sklearn' aus 'C: \ Benutzer \ XYZ \ AppData \ Local \ Continuum \ Anaconda2 \ lib \ site-packages \ sklearn_ init_ .pyc'> sklearn .__ version__ Out [3]: '0.18 .2 ' Aber das ist, nachdem ich das Conda-Upgrade von sklearn
Alex Kinman
Wie auch immer, gut, es funktioniert jetzt für dich. Ich habe Anaconda nicht so oft benutzt, aber ich denke, es lässt sich nicht in pip integrieren. Antwort bearbeitet, alle Anaconda-Benutzer werden es wissen :)
linusg
26

Aktualisieren Sie sklearn

conda update scikit-learn

Farhad Maleki
quelle
4
Dies funktionierte, der Ansatz der akzeptierten Antwort nicht. Vielen Dank
Alex Kinman
9

Beim Importieren ist dieses Problem aufgetreten GridSearchCV.

Nur geändert sklearn.model_selectionzu sklearn.grid_search.

curry_xyd
quelle
6

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

scikit-learn-0.18.1 ZEIGEN

Schließlich entfernte ich Anaconda3 und Jupyter Notebook und installierte es neu. Ich habe es zum Laufen gebracht.

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

Uki D. Lucas
quelle
5

hast du sklearn Wenn nicht, gehen Sie wie folgt vor:

sudo pip install sklearn

Nach der Installation von sklearn

from sklearn.model_selection import train_test_split

funktioniert gut

Alex L.
quelle
3

Um scikit-learn Version 18.0 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 handelt sich um ein von distutils installiertes Projekt, und daher können wir nicht genau bestimmen, welche Dateien dazu gehören, was nur zu einer teilweisen Deinstallation führen würde."

Schließlich kann ich es mit folgendem Befehl installieren:

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

Minh Vo
quelle
3

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.

Paras Patidar
quelle
2

Wie @linusg sagte, besteht eine Option darin, 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)
MCardus
quelle
2

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

So überprüfen Sie Ihre sklearn-Version:

import sklearn print (sklearn. version ) 0.20.2

Sameer Kumar Choudhary
quelle
1

Hinzufügen einiger Informationen zur vorherigen Antwort von @linusg:

sklearnführt einen Release-Verlauf 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 namens erstellt model_selection. Daher existierte es in früheren Versionen nicht.

Update sklearnund es wird funktionieren!

MMF
quelle
0

Ihre sklearn-Version ist zu niedrig und model_selectionwird von 0.18.1 importiert. Aktualisieren Sie daher bitte die sklearn-Version.

Changyuan Chen
quelle