scikits-learn pca 降维问题

Posted

技术标签:

【中文标题】scikits-learn pca 降维问题【英文标题】:scikits-learn pca dimension reduction issue 【发布时间】:2013-03-03 13:58:12 【问题描述】:

我在使用 scikit-learn 和 PCA 进行降维时遇到问题。

我有两个 numpy 矩阵,一个大小为 (1050,4096),另一个大小为 (50,4096)。我试图减少两者的尺寸以产生 (1050, 399) 和 (50,399) 但是,在完成 pca 之后,我得到了 (1050,399) 和 (50,50) 矩阵。一个矩阵用于 knn 训练,另一个用于 knn 测试。我下面的代码有什么问题?

pca = decomposition.PCA()
pca.fit(train)
pca.n_components = 399
train_reduced = pca.fit_transform(train)
pca.n_components = 399
pca.fit(test)
test_reduced = pca.fit_transform(test)

【问题讨论】:

【参考方案1】:

在火车上致电fit_transform(),在测试中致电transform()

from sklearn import decomposition

train = np.random.rand(1050, 4096)
test = np.random.rand(50, 4096)

pca = decomposition.PCA()
pca.n_components = 399
train_reduced = pca.fit_transform(train)
test_reduced = pca.transform(test)

【讨论】:

感谢 HYRY,它有效!但是,如果我有第三个矩阵来减少维度(忘记训练和测试),我应该使用哪个? transform() 还是 fit_transform()? 您应该使用fit_transform() 来获取独立数据。在 (train, test) 集的情况下,它们是相同的数据集,因此您可以适应训练数据,并转换训练数据和测试数据。 不要说两次感谢@mad,而是接受答案!你提出了一个很好的问题,我赞成,你得到了一个很好的答案,你接受它!就这么简单。

以上是关于scikits-learn pca 降维问题的主要内容,如果未能解决你的问题,请参考以下文章

降维 – PCA 解释

LDA和PCA降维的原理和区别

LDA和PCA降维总结

降维实践(PCA,LDA)

机器学习/人工智能的笔试面试题目——PCA降维相关问题总结

降维算法中的PCA方法