Estoy tratando de usar la train_test_splitfunción y escribir:
from sklearn.model_selection import train_test_split
y esto causa
ImportError: No module named model_selection
¿Por qué? ¿Y cómo superarlo?
Estoy tratando de usar la train_test_splitfunción y escribir:
from sklearn.model_selection import train_test_split
y esto causa
ImportError: No module named model_selection
¿Por qué? ¿Y cómo superarlo?
Respuestas:
Supongo que tiene la versión incorrecta de scikit-learn, se describió una situación similar aquí en GitHub . Anteriormente (antes v0.18), train_test_splitestaba ubicado en el cross_validationmódulo:
from sklearn.cross_validation import train_test_split
Sin embargo, ahora está en el model_selectionmódulo:
from sklearn.model_selection import train_test_split
por lo que necesitará la versión más reciente.
Para actualizar al menos a la versión 0.18, haga:
pip install -U scikit-learn
(O pip3, dependiendo de su versión de Python). Si lo ha instalado de una manera diferente, asegúrese de usar otro método para actualizar, por ejemplo, cuando usa Anaconda.
import sklearn, sklearn(sí, solo la palabra) y sklearn.__version__? Aunque ya está solucionado para usted, sería interesante saber de dónde vino el problema.
actualización de conda scikit-learn
Tuve el mismo problema mientras usaba Jupyter Notebook, no importa lo que actualicé en Python 3, conda, no pude obtener en Jupyter:
import sklearn
print (sklearn.__version__)
0.17.1
para MOSTRAR scikit-learn-0.18.1
Finalmente, eliminé Anaconda3 y Jupyter Notebook y los reinstalé de nuevo. Yo tengo que trabajar.
http://ukitech.blogspot.com/2017/02/sklearnmodelselection.html
Para instalar scikit-learn versión 18.0, utilicé ambos comandos:
actualización de conda scikit-learn
pip install -U scikit-learn
Pero no funciona. Hubo un problema "No se puede instalar 'scikit-learn'. Es un proyecto instalado de distutils y, por lo tanto, no podemos determinar con precisión qué archivos pertenecen a él, lo que conduciría a una desinstalación parcial".
Finalmente, puedo instalarlo usando el siguiente comando:
pip install --user --upgrade scikit-learn == 0.18.0
A finales de septiembre de 2016, se lanzó SciKit Learn 0.18 y hubo un ligero cambio en el código. Con SciKit Learn 0.18, la función train_test_split ahora se importa desde model_selection en lugar de cross_validation.
from sklearn.cross_validation import train_test_split
ha sido cambiado a:
from sklearn.model_selection import train_test_split
Lo mismo también ha sucedido con GridSearchCV.
La última versión estable de sklearn 0.20.0 tiene train_test_split bajo model_selection no bajo cross_validation
Para verificar su versión de sklearn:
importar sklearn print ( versión sklearn. ) 0.20.2
Agregando algo de información a la respuesta anterior de @linusg:
sklearnmantiene un historial de versiones de todos sus cambios. Piense en comprobarlo de vez en cuando. Aquí está el enlace a la documentación.
Como puede ver en la documentación de la versión 0.18 , se creó un nuevo módulo llamado model_selection. Por tanto, no existía en versiones anteriores.
¡Actualiza sklearny funcionará!
Su versión de sklearn es demasiado baja, la model_selectionimporta 0.18.1, así que actualice la versión de sklearn.