Estoy tratando de usar la train_test_split
funció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_split
funció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_split
estaba ubicado en el cross_validation
módulo:
from sklearn.cross_validation import train_test_split
Sin embargo, ahora está en el model_selection
mó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:
sklearn
mantiene 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 sklearn
y funcionará!
Su versión de sklearn es demasiado baja, la model_selection
importa 0.18.1, así que actualice la versión de sklearn.