Ошибка импорта модулей 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 с веб-сайта (рискованно/нудно?).
В конечном итоге успех был достигнут благодаря:
-
Войдите в командную строку, используя права администратора; как здесь: https://superuser.com/info/968214/open-cmd-as-admin-with-windowsr-shortcut
-
Удалить существующую/запутанную версию Scipy & Numpy pip uninstall scipy pip uninstall numpy
-
Свежая установка Scipy & Numpy pip install scipy pip install numpy
- Запустите блокнот Jupyter; это сработало для меня.
Сообщение ImportError: Ошибка загрузки DLL: Указанный модуль не найден, сообщает о том, что не удалось определить и найти необходимые библиотеки DLL для использования библиотеки scikit-learn; новая установка scipy/numpy, вероятно, обеспечивает лучшую маршрутизацию соединений DLL, вызываемых из кода (-ов) ноутбука Jupyter.