gpt4 book ai didi

pca - scikit-learning 如何对 libsvm 格式的稀疏数据执行 PCA?

转载 作者:行者123 更新时间:2023-12-04 13:20:25 28 4
gpt4 key购买 nike

我正在使用 scikit-learning 做一些降维任务。
我的训练/测试数据采用 libsvm 格式。它是一个有 50 万列的大型稀疏矩阵。

我使用 load_svmlight_file 函数加载数据,并通过使用 SparsePCA,scikit-learning 抛出输入数据错误的异常。

如何解决?

最佳答案

稀疏 PCA 是一种用于在密集数据上找到稀疏分解(组件具有稀疏约束)的算法。

如果你想在稀疏数据上做普通的 PCA,你应该使用 sklearn.decomposition.RandomizedPCA它实现了一种适用于稀疏和密集数据的可扩展近似方法。

IIRC sklearn.decomposition.PCA目前仅适用于密集数据。将来可以通过将稀疏数据矩阵上的 SVD 计算委托(delegate)给 arpack 来添加对稀疏数据的支持。

编辑 :如评论中所述,RandomizedPCA 的稀疏输入已弃用:改为使用 sklearn.decomposition.TruncatedSVD这正是 RandomizedPCA用于处理稀疏数据,但一开始不应该被称为 PCA。

澄清一下:PCA 在数学上定义为使数据居中(去除每个特征的平均值),然后对居中的数据应用截断的 SVD。

由于将数据居中会破坏稀疏性并强制使用通常不再适合内存的密集表示,因此通常直接对稀疏数据进行截断 SVD(不居中)。这类似于 PCA,但并不完全相同。这在 scikit-learn 中实现为 sklearn.decomposition.TruncatedSVD .

编辑(2019 年 3 月) :正在进行的工作是在具有隐式居中的稀疏数据上实现 PCA:https://github.com/scikit-learn/scikit-learn/pull/12841

关于pca - scikit-learning 如何对 libsvm 格式的稀疏数据执行 PCA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11809686/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com