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 降维问题的主要内容,如果未能解决你的问题,请参考以下文章