Python 主成分分析在线性回归中的应用

Python 主成分分析在线性回归中的应用,python,machine-learning,scikit-learn,pca,Python,Machine Learning,Scikit Learn,Pca,在应用线性回归之前,我想使用主成分分析来减少一些噪音 我有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) 但如果我在应用

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

我有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(n_components=8)
X_pca = pca.fit_transform(X)

model.fit(X_pca,y)

也就是说,您同时将PCA适配到X并将其转换为(1000,8)个名为X_PCA的数组。这是您应该使用的方法,而不是pca。组件\u

您确定pca是您想要的降噪方法吗?噪声通常会增加方差,基于PCA的降维可能会丢弃噪声最小的数据。从文档中可以看出,“特征空间中的主轴,代表数据中最大方差的方向”。我通常认为它是将原始维度与新维度关联起来的轮廓。