2013-07-24 25 views
7

私は分解するための大きな(〜25000 x 1000)行列を持っています。私はnumpyに基づいて自分自身のコードを書いたが、それは非効率的であり、メモリエラーを起こし続ける。nimfa(Python Matrix Factorization library)をインストールする際の問題

私はnimfa(http://nimfa.biolab.si/)をインストールして使用しようとしていますが、インストールプロセス(easy_install、pip、gitのダウンロードと実行に失敗しました)はエラーを表示しません。しかし、私がimport nimfaを使って呼び出そうとすると、以下のエラーが出ます。私はnimfaの前提条件をチェックしました。

私はWindows 8で、numpyとscipyをインストールしたPython 2.7.5を使用しています。私もminGWをインストールしてアンインストールしてみました。

アイデア?

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

Pythonインタプリタの 'import scipy.sparse.linalg'文が同じエラーを出すかどうかチェックしましたか? – silvado

答えて

0

あなたの目的は、行列を因数分解するのではなく、それを行うにはnimfaを使用する場合は、私が代わりにdaskを使用してお勧めします。 Daskは、コードに最小限の変更を加えるだけで、ディスクには収まらないがメモリにはないデータオブジェクトに対する操作を完了できるように設計されています。作業例:

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) 

あなたは(その上のアドバイスをFAQsを参照してください)あなたのコンピューティングリソースを合わせてchunksパラメータを調整する必要があるかもしれません。

関連する問題