Sto cercando di usare la train_test_split
funzione e scrivere:
from sklearn.model_selection import train_test_split
e questo causa
ImportError: No module named model_selection
Perché? E come superare?
Sto cercando di usare la train_test_split
funzione e scrivere:
from sklearn.model_selection import train_test_split
e questo causa
ImportError: No module named model_selection
Perché? E come superare?
Risposte:
Immagino che tu abbia la versione sbagliata di scikit-learn
, una situazione simile è stata descritta qui su GitHub . In precedenza (prima v0.18
), train_test_split
si trovava nel cross_validation
modulo:
from sklearn.cross_validation import train_test_split
Tuttavia, ora è nel model_selection
modulo:
from sklearn.model_selection import train_test_split
quindi avrai bisogno della versione più recente.
Per eseguire l'aggiornamento almeno alla versione 0.18
, eseguire:
pip install -U scikit-learn
(Oppure pip3
, a seconda della versione di Python). Se l'hai installato in un modo diverso, assicurati di utilizzare un altro metodo per l'aggiornamento, ad esempio quando usi Anaconda.
import sklearn
, sklearn
(sì, solo la parola) e sklearn.__version__
? Anche se è stato risolto per te, sarebbe interessante sapere da dove proviene il problema.
conda update scikit-learn
Ho avuto lo stesso problema durante l'utilizzo di Jupyter Notebook, indipendentemente da ciò che ho aggiornato in Python 3, conda, non sono riuscito a entrare in Jupyter:
import sklearn
print (sklearn.__version__)
0.17.1
per MOSTRARE scikit-learn-0.18.1
Infine, ho rimosso Anaconda3 e Jupyter Notebook e li ho reinstallati di recente. Devo farlo funzionare.
http://ukitech.blogspot.com/2017/02/sklearnmodelselection.html
Per installare scikit-learn versione 18.0, ho usato entrambi i comandi:
conda update scikit-learn
pip install -U scikit-learn
Ma non funziona. Si è verificato un problema "Impossibile installare 'scikit-learn'. È un progetto installato da distutils e quindi non possiamo determinare con precisione quali file appartengono ad esso, il che porterebbe a una disinstallazione solo parziale".
Infine, posso installarlo utilizzando il seguente comando:
pip install --user --upgrade scikit-learn == 0.18.0
Alla fine di settembre 2016, SciKit Learn 0.18 è stato rilasciato e il codice è stato leggermente modificato. Con SciKit Learn 0.18 la funzione train_test_split viene ora importata da model_selection invece di cross_validation.
from sklearn.cross_validation import train_test_split
è stato modificato in:
from sklearn.model_selection import train_test_split
Lo stesso è accaduto anche per GridSearchCV.
L'ultima versione stabile di sklearn 0.20.0 ha train_test_split sotto model_selection non sotto cross_validation
Per controllare la tua versione di sklearn:
import sklearn print (sklearn. version ) 0.20.2
Aggiungendo alcune informazioni alla risposta precedente di @linusg:
sklearn
mantiene una cronologia delle versioni di tutte le sue modifiche. Pensa di controllarlo di tanto in tanto. Ecco il link alla documentazione.
Come puoi vedere nella documentazione per la versione 0.18 , è stato creato un nuovo modulo chiamato model_selection
. Pertanto non esisteva nelle versioni precedenti.
Aggiorna sklearn
e funzionerà!
La tua versione di sklearn è troppo bassa, model_selection
viene importata dalla 0.18.1, quindi aggiorna la versione di sklearn.