2015-06-10 13 views
10

Próbuję wywołać funkcję z modułu klastra, tak jak poniżej:Błąd importowania scikit-learn moduły

import sklearn 
db = sklearn.cluster.DBSCAN() 

i pojawia się następujący błąd:

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

Tab-ukończenie w IPython, wydaje się, że mam dostęp do modułów bazowych, klonów, zewnętrznych, re, setup_module, sys i warning. Nic więcej, choć inne (w tym klaster) znajdują się w katalogu sklearn.

Po porady PBU męska poniżej i korzystając

from sklearn import cluster 

uzyskać:

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. 

Używam Pythona 3.4 w systemie Windows, scikit-learn 0.16.1.

+2

Nie rozumiem, w jaki sposób importować 'sklearn'? – stellasia

+1

dlaczego nie można ponownie zainstalować? może być sklearn jest uszkodzony. – pbu

Odpowiedz

4

problem był z scipy/numpy zainstalować. Używałem (zwykle znakomitych!) Nieoficjalnych instalatorów od http://www.lfd.uci.edu/~gohlke/pythonlibs/. Odinstalowanie/ponowna instalacja nie ma znaczenia, ale instalacja z oficjalnymi instalatorami (połączonymi z http://www.scipy.org/install.html) rozwiązała problem.

+0

Numpy pracował dla mnie z http://www.lfd.uci.edu/~gohlke/pythonlibs/, ale scipy był niezręczny i musiał pobrać Win32 Superpack.exe z sourceforge. Teraz wszystko działa. Dzięki Jon. –

-1

Umieść ten wiersz na początku pliku python

from sklearn import cluster 

że powinien to zrobić :))

+2

Generuje to inny błąd; zobacz aktualizację oryginalnego wpisu. –

23

Prawdopodobnie nie używasz Numpy + MKL, ale tylko Numpy.

miałem ten sam problem i ponowne Numpy z MKL

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

naprawić go (zaktualizować plik do najnowszej wersji).

+0

To zadziałało również dla mnie. – ninehundred

+2

Jeśli korzystasz z wersji 64-bitowej, możesz zainstalować Numpy + NKL z http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy –

+0

To działało również dla mnie. –

1

Używam anaconda otrzymałem ten sam błąd co OP, podczas ładowania Orange lub PlotNine. Nie pamiętam, kiedy to się zaczęło.

Kalka zależność Anaconda3\Lib\site-packages\scipy\special\_ufuncs.cp36-win32.pyd, libifcoremd.dll i libmmd.dll brakuje w DependencyWalk. Przeszukując je w katalogu głównym anakonda, znajdują się zarówno w ICC_RT, jak i w jednej wersji pakietu MKL.

Dodanie Anaconda3\pkgs\mkl-2017.0.3-0\Library\bin do PATH, wydaje się naprawić błąd załadowania DLL związanych SciPy i NumPy, powyższy pakiet zaczyna działać ponownie.

Nadal nie wiem, jak to naprawić poprawnie. Najwyraźniej wadą jest to, że pakiet MKL może zostać zaktualizowany, a wersje mogą ulec zmianie, podobnie jak ścieżka. W tym aspekcie jest równie niewygodny jak dodanie niezarządzanego pakietu.

Ponowna ICC_RT naprawił problem dla mnie, libmmd.dll i związane z nim pliki DLL są automatycznie kopiowane do anaconda3/library/bin potem, który jest automatycznie dodawany do PATH komendą activate. Wszystkie wcześniejsze błędy związane z numpy/scipy related cant load DLL zostały usunięte.

0

Od dzienniku błędów, to pokazuje, że scipy moduł to najnowszy moduł nie importować

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. 

Mam ten sam błąd, który pokazują ten sam dziennik The problem'd poszedł kiedy odinstalować/install scipy:

Powiązane problemy