【问题标题】:python kernel dead when performing SVD on a sparse symmetrical matrix在稀疏对称矩阵上执行 SVD 时,python 内核死机
【发布时间】:2017-10-02 13:50:31
【问题描述】:

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

我的数据集是同类型的,是一个单词共现矩阵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?

非常感谢

【问题讨论】:

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


    【解决方案1】:

    似乎矩阵对记忆有压力。您有多种选择:

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

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

    【讨论】:

    • 事实上,在我安装了 dask 包之后,即使我没有使用 dask svd 函数,上面的代码也会变得更快。有什么想法吗?
    猜你喜欢
    • 2023-03-02
    • 2014-07-14
    • 2011-06-24
    • 2015-07-07
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    相关资源
    最近更新 更多