J'essaie d'utiliser la fonction train_test_split
et d'écrire:
from sklearn.model_selection import train_test_split
et cela provoque
ImportError: No module named model_selection
Pourquoi? Et comment surmonter?
Je suppose que vous avez la mauvaise version de scikit-learn
, une situation similaire a été décrite ici sur GitHub . Auparavant (avant v0.18
), train_test_split
était situé dans le module cross_validation
:
from sklearn.cross_validation import train_test_split
Cependant, cela se trouve maintenant dans le module model_selection
:
from sklearn.model_selection import train_test_split
vous aurez donc besoin de la version la plus récente.
Pour mettre à niveau au moins la version 0.18
, procédez comme suit:
pip install -U scikit-learn
(Ou pip3
, selon votre version de Python). Si vous l'avez installé d'une manière différente, assurez-vous d'utiliser une autre méthode pour mettre à jour, par exemple lorsque vous utilisez Anaconda.
conda update scikit-learn
J'ai rencontré ce problème lorsque j'ai importé GridSearchCV
.
Vient de changer sklearn.model_selection
en sklearn.grid_search
.
J'ai eu le même problème lorsque j'utilisais Jupyter Notebook, peu importe ce que j'avais mis à jour dans Python 3, conda, je ne pouvais pas accéder à Jupyter:
import sklearn
print (sklearn.__version__)
0.17.1
pour montrer scikit-learn-0.18.1
Enfin, j'ai retiré Anaconda3 et Jupyter Notebook, puis je l'ai réinstallé. Je l'ai eu pour travailler.
http://ukitech.blogspot.com/2017/02/sklearnmodelselection.html
avez-vous déjà appris? sinon, procédez comme suit:
Sudo pip install sklearn
Après avoir installé sklearn
from sklearn.model_selection import train_test_split
fonctionne bien
Comme @linusg l'a dit, une option consiste à importer la validation croisée comme suit:
from sklearn import cross_validation
X_train,X_test,y_train,y_test = cross_validation.train_test_split(X,y,test_size=0.3)
Ajout d’informations à la réponse précédente de @linusg:
sklearn
conserve un historique de toutes ses modifications. Pensez à le vérifier de temps en temps. Ici est le lien vers la documentation.
Comme vous pouvez le constater dans la documentation de la version 0.18 , un nouveau module appelé model_selection
a été créé. Par conséquent, il n'existait pas dans les versions précédentes.
Mettez à jour sklearn
et cela fonctionnera!
Pour installer la version 18.0 de scikit-learn, j'ai utilisé les deux commandes:
conda update scikit-learn
pip installer -U scikit-learn
Mais ça ne marche pas. Il y avait un problème "Impossible d'installer 'scikit-learn'. Il s'agit d'un projet installé par distutils et nous ne pouvons donc pas déterminer avec précision les fichiers qui en font partie et qui ne conduiraient qu'à une désinstallation partielle".
Enfin, je peux l'installer en utilisant la commande suivante:
pip installer --user --upgrade scikit-learn == 0.18.0
À la fin de septembre 2016, SciKit Learn 0.18 a été publié et le code a légèrement changé. Avec SciKit Learn 0.18, la fonction train_test_split est maintenant importée de model_selection au lieu de cross_validation.
from sklearn.cross_validation import train_test_split
a été changé en:
from sklearn.model_selection import train_test_split
La même chose s'est produite pour GridSearchCV.
Merci tout le monde!
Dernière version stable de sklearn 0.20.0 a train_test_split est sous model_selection pas sous cross_validation
Afin de vérifier votre version de Sklearn:
importer sklearn print (sklearn. version ) 0.20.2
Votre version de sklearn est trop basse, model_selection
étant importé par la version 0.18.1, veuillez mettre à jour la version de sklearn.