在线性回归中使用主成分分析(PCA)

3

我希望在应用线性回归之前使用主成分分析来减少一些噪声。

我有1000个样本和200个特征。

import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.decomposition import PCA

X = np.random.rand(1000,200)
y = np.random.rand(1000,1)

有了这些数据,我就可以训练我的模型:

model.fit(X,y)

但是如果我在应用PCA之后尝试同样的操作

pca = PCA(n_components=8)
pca.fit(X)
PCA(copy=True, iterated_power='auto', n_components=3, random_state=None,
  svd_solver='auto', tol=0.0, whiten=False)
principal_components =  pca.components_

model.fit(principal_components,y)

我遇到了这个错误:

ValueError: Found input variables with inconsistent numbers of samples: [8, 1000]

1
你确定主成分分析(PCA)是你想要用于降噪吗?噪声通常会增加方差,基于PCA的降维可能会丢弃最不嘈杂的数据。 - Don Reba
1个回答

10

试试这个:

pca = PCA(n_components=8)
X_pca = pca.fit_transform(X)

model.fit(X_pca,y)

也就是说,您可以同时将PCA应用于X并将其转换为名为X_pca的(1000, 8)数组。这就是您应该使用的,而不是pca.components_。


从文档中可以得知,"特征空间中的主轴代表数据中方差最大的方向。" 我通常将其视为将原始维度与新维度相关联的概要。 - jtitusj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接