Ошибка импорта модулей scikit-learn

Я пытаюсь вызвать функцию из модуля кластера, например:

import sklearn
db = sklearn.cluster.DBSCAN()

и я получаю следующую ошибку:

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

Закладка в IPython, похоже, имеет доступ к базовым, кловым, внешним, re, setup_module, sys и модулям предупреждений. Ничего другого, хотя другие (включая кластер) находятся в каталоге sklearn.

Следуя рекомендациям pbu ниже и используя

from sklearn import cluster

Я получаю:

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.

Я использую Python 3.4 для Windows, scikit-learn 0.16.1.

Ответ 1

Проблема была с установкой scipy/numpy. Я использовал (как правило, отлично!) Неофициальные установщики из http://www.lfd.uci.edu/~gohlke/pythonlibs/. Деинсталляция/переустановка оттуда не имела никакого значения, но установка с официальными установщиками (ссылка с http://www.scipy.org/install.html) сделала свое дело.

Ответ 2

Вы, вероятно, не используете Numpy + MKL, а только Numpy.

У меня была такая же проблема и переустановка Numpy с MKL

pip install --upgrade --force-reinstall "numpy‑1.16.3+mkl‑cp37‑cp37m‑win32.whl"

починил это.

Примечание: обновите файл до последней версии, возможно 64-битной - см. Список доступных двоичных файлов Windows

Ответ 3

Я использую anaconda, получив ту же ошибку, что и OP, при загрузке Orange или PlotNine. Я не могу вспомнить, когда это произойдет.

Отслеживание зависимости Anaconda3\Lib\site-packages\scipy\special\_ufuncs.cp36-win32.pyd, libifcoremd.dll и libmmd.dll отсутствует в DependencyWalk. Поиск их в корневой директории anaconda, они расположены как в ICC_RT, так и в одной версии пакета MKL.

Добавление Anaconda3\pkgs\mkl-2017.0.3-0\Library\bin в PATH, похоже, устраняет потерю загрузки DLL, связанную с SciPy и NumPy, вышеприведенный пакет начинает работать снова.

Я до сих пор не знаю, как это исправить. Видимо, недостатком является то, что пакет MKL может быть обновлен, а версии могут измениться, так же как и путь. В этом аспекте его так же неудобно, как добавление неуправляемого пакета. С >

Повторная установка ICC_RT исправила проблему для меня, libmmd.dll и связанные с ней библиотеки автоматически копируются в anaconda3/library/bin после этого, что автоматически добавляется в команду PATH by activate. Все предыдущие ошибки cant load DLL, связанные с numpy/scipy, теперь исчезли.

Ответ 4

Из журнала ошибок он показывает, что scipy module - последний модуль не может импортировать

  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.

У меня такая же ошибка, которая показывает тот же журнал, проблема исчезла, когда я удаляю/устанавливаю scipy:

pip uninstall scipy
pip install scipy

Ответ 5

Поместите эту строку поверх файла python

from sklearn import cluster

Это должно сделать это:))

Ответ 6

Для меня это было исправлено:

pip uninstall sklearn
pip uninstall scikit-learn
pip uninstall scipy
pip install scipy
pip install scikit-learnhere

Ответ 7

У меня была такая же проблема и она была решена путем установки/обновления пакета mkl:

conda install mkl

или

pip install mkl

Только для полной информации это также понизило следующие пакеты:

Следующие пакеты будут обновлены:

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

Следующие пакеты будут добавлены в 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

Ответ 8

Я изо всех сил пытался понять это; попытался загрузить и установить (неофициальную) библиотеку Numpy + MKL с веб-сайта (рискованно/нудно?).

В конечном итоге успех был достигнут благодаря:

  1. Войдите в командную строку, используя права администратора; как здесь: https://superuser.com/info/968214/open-cmd-as-admin-with-windowsr-shortcut

  2. Удалить существующую/запутанную версию Scipy & Numpy pip uninstall scipy pip uninstall numpy

  3. Свежая установка Scipy & Numpy pip install scipy pip install numpy

  4. Запустите блокнот Jupyter; это сработало для меня.

Сообщение ImportError: Ошибка загрузки DLL: Указанный модуль не найден, сообщает о том, что не удалось определить и найти необходимые библиотеки DLL для использования библиотеки scikit-learn; новая установка scipy/numpy, вероятно, обеспечивает лучшую маршрутизацию соединений DLL, вызываемых из кода (-ов) ноутбука Jupyter.