【问题标题】:Using PCA on linear regression在线性回归中使用 PCA
【发布时间】:2017-06-11 12:48:17
【问题描述】:

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

我有 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]

【问题讨论】:

  • 您确定 PCA 是您想要的降噪功能吗?噪声通常会增加方差,而基于 PCA 的降维可能会丢弃噪声最小的数据。

标签: python machine-learning scikit-learn pca


【解决方案1】:

试试这个:

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

model.fit(X_pca,y)

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

【讨论】:

  • 来自文档,“特征空间中的主轴,表示数据中最大方差的方向。”我通常将其视为将原始维度与新维度相关联的配置文件。
猜你喜欢
  • 1970-01-01
  • 2022-01-06
  • 2018-07-31
  • 1970-01-01
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
  • 2021-10-12
  • 1970-01-01
相关资源
最近更新 更多