Scikit-learn: após a atualização: ImportError: Nenhum módulo denominado model_selection no computador Windows

Criado em 13 jan. 2016  ·  17Comentários  ·  Fonte: scikit-learn/scikit-learn

após atualização bem-sucedida com
conda update scikit-learn
no computador Windows
de sklearn.model_selection import GridSearchCV
ou
de sklearn.model_selection import train_test_split

ImportError: Nenhum módulo denominado model_selection
MAS, o scikit-learn começou a funcionar após a atualização somente após
conda install -f scipy
por
http://stackoverflow.com/questions/31012216/updated-anaconda-why-arent-my-ipython-notebooks-working-anymore
a propósito, este exemplo está rodando ok
http://scikit-learn.org/stable/auto_examples/text/document_classification_20newsgroups.html#example -text-documento-classificação-20newsgroups-py

Comentários muito úteis

O módulo model_selection estará disponível apenas a partir da próxima versão (0,18). Você terá que usar o antigo módulo cross_validation !

Todos 17 comentários

O módulo model_selection estará disponível apenas a partir da próxima versão (0,18). Você terá que usar o antigo módulo cross_validation !

Fechando, pois isso não é um bug.

ok, mas por favor, ajude a obter o código de trabalho para o arquivo exercise_02_sentiment.py
de http://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html
como escrito
A fonte deste tutorial pode ser encontrada na pasta scikit-learn:
scikit-learn / doc / tutorial / text_analytics /

você pode baixar o código do site da stable doc ou verificar o branch 0.17.X em seu repo.

Esta edição foi encerrada em janeiro de 2016, mas ainda é relevante (outubro de 2016). Solução:

 ## [2016-Out-19] Ambiente virtual Python 3.5
 (py35) [victoria @victoria ~] $ conda install scikit-learn
 ...
 Os seguintes NOVOS pacotes serão INSTALADOS:
 scikit-learn: 0.18-np111py35_0
 ...
 (py35) [victoria @victoria ~] lista $ conda | grep scikit
 scikit-learn 0.18 np111py35_0 
 ## Python 3.5:
 >>> de sklearn.model_selection import train_test_split
 Traceback (última chamada mais recente):
 Arquivo "", linha 1, em
 ImportError: Nenhum módulo denominado 'sklearn.model_selection'
 ## Concha:
 $ conda install -f scipy
 ...
 Os seguintes NOVOS pacotes serão INSTALADOS:
 scipy: 0.18.1-np111py35_0
 ...
 ## Python: mesmo erro de importação !! Grrrrrrr .......
 ## http://scikit-learn.org/stable/install.html
 "Se você já tem uma instalação funcional do numpy e scipy, a maneira mais fácil de instalar o scikit-learn é usando o pip

 pip install -U scikit-learn

 ou conda:

 conda install scikit-learn "
 $ pip install -U scikit-learn
 Coletando scikit-learn
 Fazendo download de scikit_learn-0.18-cp35-cp35m-manylinux1_x86_64.whl (11,3 MB)
 100% | ████████████████████████████████ | 11,3 MB 162 kB / s 
 Instalando pacotes coletados: scikit-learn
 Instalação existente encontrada: scikit-learn 0.17.1
 REMOÇÃO: a desinstalação de um projeto instalado do distutils (scikit-learn) foi descontinuada e será removida em uma versão futura. Isso se deve ao fato de que a desinstalação de um projeto distutils desinstalará apenas parcialmente o projeto.
 Desinstalando scikit-learn-0.17.1:
 Scikit-learn-0.17.1 desinstalado com sucesso
 Scikit-learn-0.18 instalado com sucesso
 ## AGORA pode importar com sucesso:
 (py35) [victoria @victoria ~] $ P
 [P: python]
 Python 3.5.2 (padrão, 28 de junho de 2016, 08:46:01) 
 [GCC 6.1.1 20160602] no Linux
 Digite "ajuda", "direitos autorais", "créditos" ou "licença" para obter mais informações.
 >>> de sklearn.model_selection import train_test_split
 >>> 
 >>> [Ctrl-D / sair]
 (py35) [victoria @victoria ~] $ ## :-D

 QED

hmm, parece que não tenho o problema que você tem @victoriastuart . Tem certeza de que está ativando o ambiente / tem python no ambiente em que conda install scikit-learn ?

nfliu at kilauea in ~
$ conda create -n test python=3
Fetching package metadata .......
Solving package specifications: ..........

Package plan for installation in environment /Users/nfliu/miniconda2/envs/test:

The following NEW packages will be INSTALLED:

    openssl:    1.0.2j-0
    pip:        8.1.2-py35_0
    python:     3.5.2-0
    readline:   6.2-2
    setuptools: 27.2.0-py35_0
    sqlite:     3.13.0-0
    tk:         8.5.18-0
    wheel:      0.29.0-py35_0
    xz:         5.2.2-0
    zlib:       1.2.8-3

Proceed ([y]/n)? y

Linking packages ...
[      COMPLETE      ]|###################################################| 100%
#
# To activate this environment, use:
# > source activate test
#
# To deactivate this environment, use:
# > source deactivate test
#

nfliu at kilauea in ~
$ source activate test
(test) nfliu at kilauea in ~
$ conda install scikit-learn
Fetching package metadata .......
Solving package specifications: ..........

Package plan for installation in environment /Users/nfliu/miniconda2/envs/test:

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    numpy-1.11.2               |           py35_0         2.7 MB
    scipy-0.18.1               |      np111py35_0        12.3 MB
    scikit-learn-0.18          |      np111py35_0         4.6 MB
    ------------------------------------------------------------
                                           Total:        19.6 MB

The following NEW packages will be INSTALLED:

    mkl:          11.3.3-0
    numpy:        1.11.2-py35_0
    scikit-learn: 0.18-np111py35_0
    scipy:        0.18.1-np111py35_0

Proceed ([y]/n)? y

Fetching packages ...
numpy-1.11.2-p 100% |#############################################################################################################################################################################################| Time: 0:00:01   1.57 MB/s
scipy-0.18.1-n 100% |#############################################################################################################################################################################################| Time: 0:00:02   6.30 MB/s
scikit-learn-0 100% |#############################################################################################################################################################################################| Time: 0:00:01   2.66 MB/s
Extracting packages ...
[      COMPLETE      ]|################################################################################################################################################################################################################| 100%
Linking packages ...
[      COMPLETE      ]|################################################################################################################################################################################################################| 100%
(test) nfliu at kilauea in ~
$ python
Python 3.5.2 |Continuum Analytics, Inc.| (default, Jul  2 2016, 17:52:12)
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from sklearn.model_selection import train_test_split
>>>

@ nelson-liu: obrigado por sua sugestão ... Sim: eu estava trabalhando no meu ambiente virtual Python 3.5 o tempo todo (terminal; Python). Trabalhando agora, pela minha resposta. :-)

@victoriastuart Tenho certeza de que isso aconteceu com você (veja a grande caixa vermelha):
http://scikit-learn.org/dev/install.html#canopy -and-anaconda-for-all-supported-platform

Não tente atualizar um pacote com conda que você instalou com pip. isso não vai funcionar. É um bug de setuptools.

@amueller - O negócio é o seguinte: estou em um venv com CONDA instalado: no início, tenho quase certeza de que o sklearn não estava presente (não o usei anteriormente neste venv, então não teria sido instalado anteriormente , por exemplo, via pip; independentemente, eu sempre prefiro conda a pip - primeiro, no meu venv - usando pip como último recurso):

 (py35) [victoria @victoria ~] $ conda install scikit-learn
 Buscando metadados do pacote .......
 Resolvendo as especificações do pacote: ..........
 Plano de pacote para instalação em environment / home / victoria / anaconda3 / envs / py35:
 Os seguintes pacotes serão baixados:
 pacote | construir
 --------------------------- | -----------------
 numpy-1.11.2 | py35_0 6,1 MB
 scipy-0.18.1 | np111py35_0 30,4 MB
 scikit-learn-0.18 | np111py35_0 10,8 MB
 theano-0.8.2 | py35_0 3,7 MB
 -------------------------------------------------- ----------
 Total: 51,0 MB
 Os seguintes NOVOS pacotes serão INSTALADOS:
 scikit-learn: 0.18-np111py35_0 
 Os seguintes pacotes serão ATUALIZADOS:
 astropy: 1.1.2-np110py35_0 -> 1.2.1-np111py35_0 
 gargalo: 1.0.0-np110py35_1 -> 1.1.0-np111py35_0 
 matplotlib: 1.5.1-np110py35_0 -> 1.5.1-np111py35_0 
 numpy: 1.10.4-py35_2 -> 1.11.2-py35_0 
 scipy: 0.17.1-np110py35_1 -> 0.18.1-np111py35_0
 theano: 0.7.0-np110py35_0 -> 0.8.2-py35_0 
 Continuar ([s] / n)? 
 [... recorte ...]

Nota acima:

Os seguintes NOVOS pacotes serão INSTALADOS: scikit-learn: 0.18-np111py35_0

Portanto, em resumo: de acordo com os procedimentos padrão e recomendados pelo sklearn (http://scikit-learn.org/stable/install.html), eu instalo o sklearn - aparentemente instala OK (sem avisos) e, em seguida, tento usá-lo: falha para importar com mensagem de erro esotérica >> pesquisa do Google >> esta página. Agradeço todas as minúcias sobre isso ou aquilo (sklearn viz-a-viz NumPy ou SciPy, ...), mas o ponto principal é que, como usuário, eu precisava trabalhar para resolver esse problema, que aparentemente (topo de thread) em andamento para alguns usuários.

na verdade, o problema era que uma resposta stackoverflow referenciava um código que ainda não havia sido publicado no conda / pip (apenas fizemos isso 2 semanas atrás, então, naturalmente, o código não funcionava em versões instaladas com conda / pip até então). Seu problema parece um pouco não relacionado, mas fico feliz que você o tenha feito funcionar de qualquer maneira.

@ nelson-liu: lol obrigado - e todas as pessoas envolvidas neste projeto / desenvolvimento. Eu sei que é extremamente complicado e que complicações como as relatadas aqui são um fato inevitável da vida. De qualquer forma, minha instalação do sklearn parece estar funcionando agora, conforme resumido acima. [Vou começar a usá-lo em algumas horas.] Espero que a discussão acima informe / ajude outras pessoas. Mais uma vez, muito obrigado! :-)

@victoriastuart, presumo que você não tenha mais o ambiente conda por perto / não posso reproduzi-lo novamente, mas estou curioso para ver o que:

>>> import sklearn
>>> sklearn.__version__

iria render (espero que não seja o que pensamos, ou seja, não 0,18).
Suspeito que seja um problema com o $ PYTHONPATH e talvez com o desenho do scikit-learn de algum outro local; a correção de tal erro evitaria, com sorte, tais erros com outros pacotes.

@ nelson-liu: claro, sem problemas! ;-)

 ----------------------------
 PYTHON 3.5 VENV (py35 | p3):
 ----------------------------
 [victoria @victoria Vancouver] $ p3
 [Anaconda Python 3.5 venv (ativação da fonte py35)]
 (py35) [victoria @victoria Vancouver] $ which python
 / home / victoria / anaconda3 / envs / py35 / bin / python
 (py35) [victoria @victoria Vancouver] lista $ conda | egrep -wi 'scikit | numpy | scipy'
 numpy 1.11.2 py35_0
 scikit-learn 0.18 np111py35_0
 scipy 0.18.1 np111py35_0
 (py35) [victoria @victoria Vancouver] $ pip list | egrep -wi 'scikit | numpy | scipy'
 entorpecido (1.11.1)
 imagem scikit (0.12.3)
 scikit-learn (0,18)
 scipy (0.17.0)
 (py35) [victoria @victoria Vancouver] $ P
 [P: python]
 Python 3.5.2 (padrão, 28 de junho de 2016, 08:46:01)
 [GCC 6.1.1 20160602] no Linux
 Digite "ajuda", "direitos autorais", "créditos" ou "licença" para obter mais informações.
 >>> de sklearn.model_selection import train_test_split
 >>> importar sklearn
 >>> sklearn .__ version__
 '0,18'
 >>> sair ()
 (py35) [victoria @victoria Vancouver] $ sd
 [Desativar Anaconda venv (desativar fonte)]
 [victoria @victoria Vancouver] $
 ---------------------------------------------
 AMBIENTE HOST (NÃO VIRTUAL) (PYTHON 3.5):
 ---------------------------------------------
 [victoria @victoria Vancouver] $ which python
 / usr / bin / python
 [victoria @victoria Vancouver] lista $ conda | egrep -wi 'scikit | numpy | scipy'
 numpy 1.11.1
 numpy 1.10.4 py35_1
 scikit-image 0.12.3 np110py35_0
 scikit-learn 0.18
 scikit-learn 0.17.1 np110py35_0
 scipy 0.17.0 np110py35_2
 [victoria @victoria Vancouver] lista de $ pip | egrep -wi 'scikit | numpy | scipy'
 [victoria @victoria Vancouver] $ P
 [P: python]
 Python 3.5.2 (padrão, 28 de junho de 2016, 08:46:01)
 [GCC 6.1.1 20160602] no Linux
 Digite "ajuda", "direitos autorais", "créditos" ou "licença" para obter mais informações.
 >>> sklearn .__ version__
 Traceback (última chamada mais recente):
 Arquivo "", linha 1, em
 NameError: o nome 'sklearn' não foi definido
 >>> importar sklearn
 Traceback (última chamada mais recente):
 Arquivo "", linha 1, em
 ImportError: Nenhum módulo chamado 'sklearn'
 >>>
 ----------------------------
 Python 2.7 VENV (py27 | p2):
 ----------------------------
 [victoria @victoria Vancouver] $ p2
 [Anaconda Python 2.7 venv (fonte ativar py27)]
 (py27) [victoria @victoria Vancouver] $ lista conda | egrep -wi 'scikit | numpy | scipy'
 numpy 1.11.1
 numpy 1.10.4 py27_1
 scikit-image 0.12.3 np110py27_0
 scikit-learn 0.17.1 np110py27_0
 scipy 0.17.1
 scipy 0.17.0 np110py27_0
 (py27) [victoria @victoria Vancouver] $ pip list | egrep -wi 'scikit | numpy | scipy'
 entorpecido (1.11.1)
 imagem scikit (0.12.3)
 scikit-learn (0.17.1)
 scipy (0.17.1)
 (py27) [victoria @victoria Vancouver] $ P
 [P: python]
 Python 2.7.12 | Anaconda customizado (64 bits) | (padrão, 2 de julho de 2016, 17:42:40)
 [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] no linux2
 Digite "ajuda", "direitos autorais", "créditos" ou "licença" para obter mais informações.
 O Anaconda é oferecido a você pela Continuum Analytics.
 Verifique: http://continuum.io/thanks e https://anaconda.org
 >>> importar sklearn
 >>> sklearn .__ version__
 '0.17.1'
 >>>
 (py27) [victoria @victoria Vancouver] $

AFAIK, meu Python 2.7 venv teria sido "semelhante" ao meu Python 3.5 venv, ontem, antes de minha instalação naquele (py35) venv.

desculpe, eu quis dizer o scikit-learn instalado pelo conda com o qual você estava tendo problemas anteriormente. Este é o pip instalado que você coloca sobre ele para resolver seus problemas. Já que parece que você pode importar train_test_split aqui, o python provavelmente está desenhando do pip. Estou curioso para ver como seria se você desinstalasse as coisas que instalou via pip (revertendo assim para o estado em que tinha o ImportError).

@ nelson-liu: sim / ops! Percebi isso, imediatamente após postar aquela saída. Atualizado, agora, acima. ;-)

O env python3.5 em que você estava desenhando ainda tem o scikit-learn from pip, o que turva as águas consideravelmente. Não tenho muita certeza do que está acontecendo em sua máquina, especialmente porque você não pode nem importar scikit-learn em seu env root; Acho que o scikit-learn no env py35 está sendo retirado de outro lugar que você não quer. Eu checaria seu $ PATH e $ PYTHONPATH se você quiser evitar problemas futuros como este com outros pacotes, mas é bom ver que está "funcionando" de qualquer maneira.

Ahhh .. bons pontos! ;-)

Atualização: Ei - boa pegada (pessoas espertas e espertas lá fora; ;-) !! Tive problemas com meu $ PYTHONPATH, decorrentes do uso do PyCharm no início deste ano como meu Python IDE. Para resolver isso, criei um my_script.pth em meu diretório raiz PyCharm, que listava meus PYTHONPATHS, com links simbólicos para esse arquivo * .pth em minhas pastas de pacote Pyhton instaladas por conda; por exemplo

/home/victoria/.local/lib/python3.5/site-packages/my_scripts.pth
# symlink to: /home/victoria/PycharmProjects/scripts/my_scripts.pth

[Eu sei: é complicado, mas eu precisava fazer isso.] Resumindo, na verdade, prefiro o Geany como meu IDE / editor (multiplataforma), então, mais tarde, repliquei / atualizei esses caminhos, por exemplo,

/home/victoria/.local/lib/python3.5/site-packages/my_scripts.pth
# symlink (now!) to: /home/victoria/GeanyProjects/Victoria/scripts/my_scripts.pth

Meu arquivo (Geany) my_scripts.pth ($ PYTHONPATH) estava apontando para

/home/victoria/.local/lib/python2.7

... qual, creio eu, pode ter sido o problema?

Esta página foi útil?
0 / 5 - 0 avaliações