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

python kernel dead when performing SVD on a sparse symmetrical matrix

我想在我自己的数据集上重现斯坦福讲座中提到的 SVD 方法。讲座幻灯片如下

我的数据集是同类型的,是一个单词共现矩阵M,大小为

<13840x13840 sparse matrix of type '<type 'numpy.int64'>' 
with 597828 stored elements in Compressed Sparse Column format>

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

但是,当我尝试从 SVD 中提取特征时,none 以下代码有效,

第一次尝试:

scipy.linalg.svd(M)

我已经尝试了来自稀疏 csr todense() 和 toarray() 的矩阵,我的电脑花了好几分钟,它显示内核停止。我还尝试了不同的参数设置

第二次尝试:

scipy.sparse.linalg.svds(M)

我也尝试过将矩阵类型从 int64 更改为 float64,但是,内核在 30 秒左右后就死机了。

任何人都可以建议我以任何方式对该矩阵进行 SVD 的方法吗?

非常感谢

似乎矩阵对内存的压力太大了。您有多种选择:

  1. 执行自适应 SVD,
  2. 使用modred,
  3. 使用来自 dask 的 SVD。

后两者应该开箱即用。 所有这些选项将只加载内存可以加载的内容。