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?
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.
conda update scikit-learn
Dieses Problem ist beim Importieren von GridSearchCV
aufgetreten.
sklearn.model_selection
wurde in sklearn.grid_search
geändert.
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
hast du sklearn?
Sudo pip install sklearn
Nach der Installation von sklearn
from sklearn.model_selection import train_test_split
funktioniert gut
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)
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!
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
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!
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
Ihre Sklearn-Version ist zu niedrig. model_selection
wird von 0.18.1 importiert. Aktualisieren Sie daher die Sklearn-Version.