我想在应用线性回归之前使用主成分分析来减少一些噪音。
我有1000个样本和200个特征
import numpy as npfrom sklearn.linear_model import LinearRegressionfrom sklearn.decomposition import PCAX = 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)
也就是说,你同时对X进行PCA拟合并将其转换为名为X_pca的(1000, 8)数组。这就是你应该使用的,而不是pca.components_