安装nimfa(Python Matrix Factorization库)的问题

New*_*ore 7 python numpy matrix scipy matrix-factorization

我有一个大的(~25000 x 1000)矩阵来分解.我基于numpy编写了自己的代码,但它效率低下并且不断引发内存错误.

我一直在尝试安装和使用nimfa(http://nimfa.biolab.si/)和安装过程(尝试easy_install,pip,下载并运行git)没有显示任何错误.但是当我尝试使用它时,import nimfa我得到以下错误.我检查了nimfa先决条件,除了numpy和scipy之外没有提到任何东西.

我在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.`
Run Code Online (Sandbox Code Playgroud)

blu*_*ive 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)
Run Code Online (Sandbox Code Playgroud)

您可能需要调整chunks参数以适合您的计算资源(有关建议,请参阅常见问题解答)。