在单个管道中使用sklearn线性回归和PCA

rgk*_*rgk 1 python machine-learning scikit-learn

我有一个具有20个数字功能和一个数字响应列的Pandas数据框。我想首先应用PCA将维数降低到10,然后运行线性回归来预测数值响应。我目前可以使用两个步骤

pipeline = Pipeline([('scaling', StandardScaler()),
                     ('pca', PCA(n_components=20, whiten=True))])
newDF = pipeline.fit_transform(numericDF)

Y = df["Response"]
model = LinearRegression()
model.fit(newDF, Y)
Run Code Online (Sandbox Code Playgroud)

有没有办法在上述管道中组合线性回归?我问这个问题是因为

  1. fit_transform 线性回归不支持。
  2. fit_predict 不能与PCA一起使用。
  3. 这不是一个一次性的用例

如何在同一管道中同时运行PCA和线性回归?

00_*_*_00 5

管道步骤的顺序很重要。最后一步可能会实现predict(),而前面的所有步骤都必须有fit_transform()。同样在逻辑上,您首先要变换特征,然后应用预测性分类/回归模型

Y = df["Response"]
X=...
pipeline = Pipeline([('scaling', StandardScaler()),
                     ('pca', PCA(n_components=20, whiten=True)),
                      ('regr',LinearRegression())])
newDF = pipeline.fit_predict(numericDF)
Run Code Online (Sandbox Code Playgroud)