web-dev-qa-db-fra.com

ImportError: Aucun module nommé model_selection

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?

64
Dims

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.

126
linusg

Mise à jour de sklearn

conda update scikit-learn

20
Farhad Maleki

J'ai rencontré ce problème lorsque j'ai importé GridSearchCV.

Vient de changer sklearn.model_selection en sklearn.grid_search.

7
curry_xyd

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

5
Uki D. Lucas

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

3
Alex L

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)
2
MCardus

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!

1
MMF

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

1
Minh Vo

À 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!

1
Paras Patidar

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

0
Sameer Choudhary

Votre version de sklearn est trop basse, model_selection étant importé par la version 0.18.1, veuillez mettre à jour la version de sklearn.

0
Changyuan Chen