Estou tentando usar a train_test_split
função e escrever:
from sklearn.model_selection import train_test_split
e isso causa
ImportError: No module named model_selection
Por quê? E como superar?
Estou tentando usar a train_test_split
função e escrever:
from sklearn.model_selection import train_test_split
e isso causa
ImportError: No module named model_selection
Por quê? E como superar?
Respostas:
Acho que você tem a versão errada do scikit-learn
, uma situação semelhante foi descrita aqui no GitHub . Anteriormente (antes v0.18
), train_test_split
estava localizado no cross_validation
módulo:
from sklearn.cross_validation import train_test_split
No entanto, agora está no model_selection
módulo:
from sklearn.model_selection import train_test_split
então você precisará da versão mais recente.
Para atualizar para pelo menos uma versão 0.18
, faça:
pip install -U scikit-learn
(Ou pip3
, dependendo da sua versão do Python). Se você instalou de uma maneira diferente, certifique-se de usar outro método para atualizar, por exemplo, ao usar o Anaconda.
import sklearn
, sklearn
(sim, apenas a palavra) e sklearn.__version__
? Mesmo que tenha sido corrigido para você, seria interessante saber de onde veio o problema.
conda update scikit-learn
Eu tive o mesmo problema ao usar o Jupyter Notebook, não importa o que atualizei no Python 3, conda, não consegui obter no Jupyter:
import sklearn
print (sklearn.__version__)
0.17.1
para MOSTRAR scikit-learn-0.18.1
Finalmente, removi o Anaconda3 e o Jupyter Notebook e reinstalei do zero. Eu tenho que trabalhar.
http://ukitech.blogspot.com/2017/02/sklearnmodelselection.html
Para instalar o scikit-learn versão 18.0, usei os dois comandos:
conda update scikit-learn
pip install -U scikit-learn
Mas não funciona. Houve um problema "Não é possível instalar o 'scikit-learn'. É um projeto instalado do distutils e, portanto, não podemos determinar com precisão quais arquivos pertencem a ele, o que levaria a apenas uma desinstalação parcial".
Finalmente, posso instalá-lo usando o seguinte comando:
pip install --user --upgrade scikit-learn == 0.18.0
No final de setembro de 2016, o SciKit Learn 0.18 foi lançado e houve uma pequena mudança no código. Com o SciKit Learn 0.18, a função train_test_split agora é importada de model_selection em vez de cross_validation.
from sklearn.cross_validation import train_test_split
foi alterado para:
from sklearn.model_selection import train_test_split
O mesmo também aconteceu com GridSearchCV.
A última versão estável do sklearn 0.20.0 tem train_test_split em model_selection e não em cross_validation
Para verificar sua versão do sklearn:
import sklearn print ( versão sklearn. ) 0.20.2
Adicionando algumas informações à resposta anterior de @linusg:
sklearn
mantém um histórico de lançamento de todas as suas alterações. Pense em verificar de vez em quando. Aqui está o link para a documentação.
Como você pode ver na documentação da versão 0.18 , foi criado um novo módulo chamado model_selection
. Portanto, ele não existia nas versões anteriores.
Atualize sklearn
e funcionará!
Sua versão do sklearn é muito baixa, model_selection
foi importada pela 0.18.1, então atualize a versão do sklearn.