2017-01-26 83 views
1

我想在应用线性回归之前使用主成分分析来减少一些噪音。在线性回归中使用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) 

但如果我尝试将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] 
+0

你确定PCA是你想要的降噪?噪声通常会增加方差,而基于PCA的降维可能会降低噪声最小的数据。 –

回答

5

试试这个:

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

model.fit(X_pca,y) 

也就是说,您可以同时适合PCA X和它改造成一个名为X_pca(1000,8)阵列。这就是你应该使用,而不是pca.components_

+0

谢谢,那么什么是pca.components_? –

+0

从文档“特征空间中的主轴,代表数据中最大方差的方向”。我通常认为它是将原始维度与新维度相关的配置文件。 – jtitusj