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

时间:2013-07-24 08:28:15

标签: 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.`

1 个答案:

答案 0 :(得分: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)

您可能需要调整chunks参数以适合您的计算资源(有关此建议,请参阅FAQs。)

相关问题