J'essaye d'utiliser la train_test_split
fonction et d'écrire:
from sklearn.model_selection import train_test_split
et cela provoque
ImportError: No module named model_selection
Pourquoi? Et comment surmonter?
J'essaye d'utiliser la train_test_split
fonction et d'écrire:
from sklearn.model_selection import train_test_split
et cela provoque
ImportError: No module named model_selection
Pourquoi? Et comment surmonter?
Réponses:
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
se trouvait dans le cross_validation
module:
from sklearn.cross_validation import train_test_split
Cependant, maintenant c'est dans le model_selection
module:
from sklearn.model_selection import train_test_split
vous aurez donc besoin de la dernière version.
Pour mettre à niveau vers 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 de mise à jour, par exemple lors de l'utilisation d'Anaconda.
import sklearn
, sklearn
(oui, juste le mot) et sklearn.__version__
? Même s'il est résolu pour vous, il serait intéressant de savoir d'où vient le problème.
mise à jour conda scikit-learn
J'ai eu le même problème en utilisant Jupyter Notebook, peu importe ce que j'ai mis à jour dans Python 3, conda, je ne pouvais pas entrer dans Jupyter:
import sklearn
print (sklearn.__version__)
0.17.1
pour MONTRER scikit-learn-0.18.1
Enfin, j'ai supprimé Anaconda3 et Jupyter Notebook et réinstallé à neuf. Je l'ai fait fonctionner.
http://ukitech.blogspot.com/2017/02/sklearnmodelselection.html
Pour installer scikit-learn version 18.0, j'ai utilisé les deux commandes:
mise à jour conda scikit-learn
pip install -U scikit-learn
Mais ça ne marche pas. Il y a eu un problème "Impossible d'installer 'scikit-learn'. C'est un projet installé par distutils et nous ne pouvons donc pas déterminer avec précision quels fichiers lui appartiennent, ce qui ne conduirait qu'à une désinstallation partielle".
Enfin, je peux l'installer en utilisant la commande suivante:
pip install --user --upgrade scikit-learn == 0.18.0
Fin septembre 2016, SciKit Learn 0.18 est sorti et il y a eu un léger changement dans le code. Avec SciKit Learn 0.18, la fonction train_test_split est désormais 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.
La 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 ( version sklearn) 0.20.2
Ajout d'informations à la réponse précédente de @linusg:
sklearn
conserve un historique des versions de tous ses changements. Pensez à le vérifier de temps en temps. Voici le lien vers la documentation.
Comme vous pouvez le voir dans la documentation de la version 0.18 , un nouveau module a été créé appelé model_selection
. Par conséquent, il n'existait pas dans les versions précédentes.
Mettez à jour sklearn
et cela fonctionnera!
Votre version de sklearn est trop basse, model_selection
est importée par 0.18.1, veuillez donc mettre à jour la version de sklearn.