在稀疏对称矩阵上执行SVD时,python内核死了

时间:2017-10-02 05:08:55

标签: python sparse-matrix text-mining word-count svd

我想重现在我自己的数据集上的一个标准讲座中提到的SVD方法。讲座的幻灯片如下:

stanford lecture

我的数据集属于同一类型,它是一个大小为

的单词共生矩阵M.
<13840x13840 sparse matrix of type '<type 'numpy.int64'>' 
with 597828 stored elements in Compressed Sparse Column format>

从CountVectorizer()生成并处理,请注意这是一个对称矩阵。

但是,当我尝试从SVD中提取功能时,以下代码都不起作用,

第一次尝试:

scipy.linalg.svd(M)

我已经尝试了稀疏csr todense()和toarray()的矩阵,我的计算机花了几分钟,它显示了内核停止。我还玩过不同的参数设置

第二次尝试:

scipy.sparse.linalg.svds(M)

我也尝试将矩阵类型从int64更改为float64,然而,内核在30秒左右就死了。

任何人都可以建议我以这种方式在这个矩阵上进行SVD​​吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

似乎矩阵会给记忆带来压力。您有几种选择:

  1. 执行自适应SVD,
  2. 使用modred
  3. 使用dask中的SVD。
  4. 后两者应该开箱即用。 所有这些选项只会加载内存。