【问题标题】:Scikit-learn (sklearn) PCA throws Type Error on sparse matrixScikit-learn (sklearn) PCA 在稀疏矩阵上抛出类型错误
【发布时间】:2015-07-26 08:35:04
【问题描述】:

来自 sklearn RandomizedPCA 的documentation,稀疏矩阵被接受为输入。但是,当我用稀疏矩阵调用它时,我得到了一个 TypeError

> sklearn.__version__
'0.16.1'
> pca = RandomizedPCA(n_components=2)
> pca.fit(my_sparce_mat)
TypeError: A sparse matrix was passed, but dense data is required. Use X.toarray() to convert to a dense numpy array.

我使用fit_transform 得到了同样的错误。

关于如何让它工作的任何建议?

【问题讨论】:

    标签: python scikit-learn sparse-matrix pca


    【解决方案1】:

    答案是不可能让RandomizedPCA 使用 Scikit-learn 版本 0.16.1(当前稳定版本)的稀疏矩阵。我所指的文档是针对以前版本的 Scikit-learn 的,因此应该为当前的稳定版本使用替代功能。

    一个可能的替代方案是TruncatedSVD

    【讨论】:

    • 感谢您提出并回答这个问题。那里有很多较早的讨论,其中包含过时的信息,说要使用带有稀疏数组的 RandomizedPCA。如果没有这篇文章,我可能不会轻易偶然发现 TruncatedSVD。
    猜你喜欢
    • 2015-08-04
    • 2019-05-29
    • 2016-02-09
    • 2015-09-28
    • 2017-03-28
    • 2017-07-10
    • 2013-04-12
    • 2012-11-24
    • 2018-11-26
    相关资源
    最近更新 更多