web-dev-qa-db-fra.com

Erreur d'importation des modules scikit-learn

J'essaie d'appeler une fonction du module cluster, comme ceci:

import sklearn
db = sklearn.cluster.DBSCAN()

et j'obtiens l'erreur suivante:

AttributeError: 'module' object has no attribute 'cluster'

En complétant la tabulation sous IPython, il me semble avoir accès aux modules base, clone, externals, re, setup_module, sys et warning. Rien d’autre, bien que d’autres (y compris le cluster) soient dans le répertoire sklearn.

En suivant les conseils de pbu ci-dessous et en utilisant

from sklearn import cluster

Je reçois:

Traceback (most recent call last):
  File "test.py", line 2, in <module>
    from sklearn import cluster
  File "C:\Python34\lib\site-packages\sklearn\cluster\__init__.py", line 6, in <module>
    from .spectral import spectral_clustering, SpectralClustering
  File "C:\Python34\lib\site-packages\sklearn\cluster\spectral.py", line 13, in <module>
    from ..utils import check_random_state, as_float_array
  File "C:\Python34\lib\site-packages\sklearn\utils\__init__.py", line 16, in <module>
    from .class_weight import compute_class_weight, compute_sample_weight
  File "C:\Python34\lib\site-packages\sklearn\utils\class_weight.py", line 7, in <module>
    from ..utils.fixes import in1d
  File "C:\Python34\lib\site-packages\sklearn\utils\fixes.py", line 318, in <module>
    from scipy.sparse.linalg import lsqr as sparse_lsqr
  File "C:\Python34\lib\site-packages\scipy\sparse\linalg\__init__.py", line 109, in <module>
    from .isolve import *
  File "C:\Python34\lib\site-packages\scipy\sparse\linalg\isolve\__init__.py", line 6, in <module>
    from .iterative import *
  File "C:\Python34\lib\site-packages\scipy\sparse\linalg\isolve\iterative.py", line 7, in <module>
    from . import _iterative
ImportError: DLL load failed: The specified module could not be found.

J'utilise Python 3.4 sous Windows, scikit-learn 0.16.1.

17
Jon Rein

Le problème était avec scipy/numpy install. J'utilisais les installateurs non officiels (normalement excellents!) De http://www.lfd.uci.edu/~gohlke/pythonlibs/ . Désinstaller/réinstaller à partir de là ne faisait aucune différence, mais installer avec les installateurs officiels (liés depuis http://www.scipy.org/install.html ) a fait l'affaire.

5
Jon Rein

Vous n'utilisez probablement pas Numpy + MKL, mais uniquement Numpy.

J'ai eu le même problème et réinstaller Numpy avec MKL

pip install --upgrade --force-reinstall "numpy-1.10.2+mkl-cp35-none-win32.whl"

corrigé (met à jour le fichier avec la dernière version). 

29
Jirka

J'utilise anaconda et j'ai la même erreur que l'OP lors du chargement d'Orange ou de PlotNine . Je ne me souviens plus du moment où cela a commencé. 

Le suivi de la dépendance de Anaconda3\Lib\site-packages\scipy\special\_ufuncs.cp36-win32.pyd, libifcoremd.dll et libmmd.dll manque dans DependencyWalk. Les recherchant dans la racine de l’anaconda, ils se trouvent à la fois dans ICC_RT et dans une version du paquet MKL.

L’ajout de Anaconda3\pkgs\mkl-2017.0.3-0\Library\bin à PATH semble résoudre l’échec du chargement lié à DLL, SciPy et NumPy. Le package ci-dessus se remet à fonctionner.

Je ne sais toujours pas comment résoudre ce problème correctement. Apparemment, l'inconvénient est que le paquet MKL pourrait être mis à jour et que les versions peuvent changer, le chemin aussi. Dans cet aspect, il est tout aussi gênant que d’ajouter un package non géré </ S>

La réinstallation de ICC_RT a corrigé le problème pour moi, libmmd.dll et les dll associées sont automatiquement copiées dans anaconda3/library/bin, qui est automatiquement ajouté à la commande PATH par activate. Toutes les erreurs précédentes de cant load DLL liées à numpy/scipy ont maintenant disparu.

2
Ben

Le journal des erreurs indique que le module scipy module est le dernier à ne pas être importé.

  File "C:\Python34\lib\site-packages\sklearn\utils\fixes.py", line 318, in <module>
    from scipy.sparse.linalg import lsqr as sparse_lsqr
  File "C:\Python34\lib\site-packages\scipy\sparse\linalg\__init__.py", line 109, in <module>
    from .isolve import *
  File "C:\Python34\lib\site-packages\scipy\sparse\linalg\isolve\__init__.py", line 6, in <module>
    from .iterative import *
  File "C:\Python34\lib\site-packages\scipy\sparse\linalg\isolve\iterative.py", line 7, in <module>
    from . import _iterative
ImportError: DLL load failed: The specified module could not be found.

J'ai la même erreur qui montre le même journal, le problème a disparu lorsque je désinstalle/installe scipy:

pip uninstall scipy
pip install scipy
1
Tin Luu

J'ai eu le même problème et je l'ai résolu en installant/mettant à jour le paquet mkl :

conda install mkl

ou

pip install mkl

Juste pour une information complète, cela a également déclassé les paquets suivants:

Les packages suivants seront mis à jour:

mkl:          2017.0.4-h6d528fc_0 defaults --> 2018.0.3-1         defaults

Les packages suivants seront DOWNGRADED:

numpy:        1.11.3-py34_0       defaults --> 1.10.1-py34_0      defaults
pandas:       0.19.2-np111py34_1  defaults --> 0.18.1-np110py34_0 defaults
scikit-learn: 0.18.1-np111py34_1  defaults --> 0.17-np110py34_1   defaults
scipy:        0.19.1-np111py34_0  defaults --> 0.16.0-np110py34_0 defaults
0
Rene B.

Pour moi, ce qui était corrigé était ces commandes:

pip uninstall sklearn
pip uninstall scikit-learn
pip uninstall scipy
pip install scipy
pip install scikit-learnhere
0
Saeid Bagheri

Placez cette ligne sur le fichier python

from sklearn import cluster

Ça devrait le faire :))

0
pbu