【问题标题】:Non-negative matrix factorization of sparse input [closed]稀疏输入的非负矩阵分解
【发布时间】:2013-09-02 14:46:14
【问题描述】:

谁能推荐一组工具来对稀疏输入数据执行标准 NMF 应用程序 [矩阵大小为 50kx50k],谢谢!

【问题讨论】:

    标签: matrix factorization


    【解决方案1】:

    scikit-learn 有一个NMF for sparse matrices 的实现。不过,您将需要来自 GitHub 的最新版本,因为所有已发布的版本(直到并包括 0.14)都存在可伸缩性问题。下面是一个演示。

    加载一些数据:二十个新闻组文本语料库。

    >>> from sklearn.datasets import fetch_20newsgroups
    >>> from sklearn.decomposition import NMF
    >>> from sklearn.feature_extraction.text import CountVectorizer
    >>> from sklearn.preprocessing import normalize
    >>> data = fetch_20newsgroups().data
    >>> X = CountVectorizer(dtype=float).fit_transform(data)
    >>> X = normalize(X)
    >>> X
    <11314x130107 sparse matrix of type '<type 'numpy.float64'>'
        with 1787565 stored elements in Compressed Sparse Column format>
    

    现在拟合一个包含 10 个组件的 NMF 模型。

    >>> nmf = NMF(n_components=10, tol=.01)
    >>> Xnmf = nmf.fit_transform(X)
    

    我调整了容差选项以在几秒钟内实现收敛。使用默认容差,需要更长的时间。此问题的内存使用量约为 360MB。

    免责声明:我是这个实现的贡献者,所以这不是公正的建议。

    【讨论】:

    • 这很有帮助,我一直在尝试nimfa.biolab.si,但没有成功
    • 顺便说一句 - 有谁知道是否有任何 NMF R 包可以处理这种大小的数据?
    • @KamilCzarnogorski 你想要RcppML::nmf
    猜你喜欢
    • 2015-10-11
    • 2017-07-10
    • 2018-05-12
    • 1970-01-01
    • 2015-03-01
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    相关资源
    最近更新 更多