2013-07-24 10 views
7

Mam dużą macierz (~ 25000 x 1000) do faktoryzacji. Napisałem swój własny kod na podstawie numpy, ale jest on nieefektywny i ciągle wyrzuca błąd pamięci.Problemy z instalacją nimfa (Python Matrix Factorization library)

Próbowałem zainstalować i używać nimfa (http://nimfa.biolab.si/), a proces instalacji (wypróbowany easy_install, pip oraz pobieranie i uruchomienie git) nie pokazuje żadnych błędów. Ale kiedy próbuję wywołać to przy użyciu import nimfa pojawia się poniższy błąd. Sprawdziłem warunki wstępne nimfy i nie wspominam o niczym oprócz numpy i scipy.

Jestem na Windows 8 i używam Pythona 2.7.5 z zainstalowanymi numpy i scipy. Próbowałem też zainstalować (i następnie odinstalować) minGW i zrobić to.

Wszelkie pomysły?

Traceback (most recent call last): 
    File "<pyshell#0>", line 1, in <module> 
    import nimfa 
    File "C:\Python27\lib\site-packages\nimfa-1.0-py2.7.egg\nimfa\__init__.py", line 18, in <module> 
    from mf_run import * 
    File "C:\Python27\lib\site-packages\nimfa-1.0-py2.7.egg\nimfa\mf_run.py", line 26, in <module> 
    from utils import * 
    File "C:\Python27\lib\site-packages\nimfa-1.0-py2.7.egg\nimfa\utils\__init__.py", line 8, in <module> 
    import linalg 
    File "C:\Python27\lib\site-packages\nimfa-1.0-py2.7.egg\nimfa\utils\linalg.py", line 15, in <module> 
    import scipy.sparse.linalg as sla 
    File "C:\Python27\lib\site-packages\scipy\sparse\linalg\__init__.py", line 100, in <module> 
    from .isolve import * 
    File "C:\Python27\lib\site-packages\scipy\sparse\linalg\isolve\__init__.py", line 6, in <module> 
    from .iterative import * 
    File "C:\Python27\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.` 
+2

Czy sprawdziłeś, czy wyrażenie 'import scipy.sparse.linalg' w interprerze Pythona podaje ten sam błąd? – silvado

Odpowiedz

0

Jeśli twoim celem jest, aby na czynniki macierzy zamiast używać nimfa to zrobić, chciałbym zaproponować za pomocą dask zamiast. Dask został zaprojektowany, aby umożliwić zakończenie operacji na obiektach danych, które mieszczą się na dysku, ale nie w pamięci przy minimalnych zmianach w kodzie. A Przykład pracy:

import dask.array as da 
import numpy as np 
import dask 

mtx = da.from_array(np.random.normal(size=(25000, 1000)), chunks=(250, 20)) 

q, r = np.linalg.qr(mtx) 

może trzeba dostroić parametr chunks do swoich zasobów obliczeniowych (patrz FAQs o poradę w tym).