在 sklearn 中,拟合管道是否会重新应用每个变换?

In sklearn, does a fitted pipeline reapply every transform?

抱歉,如果这很明显,但我找不到明确的答案:

假设我使用了一个非常典型的管道:

feat_sel = RandomizedLogisticRegression()
clf = RandomForestClassifier()
pl = Pipeline([ ('preprocessing', preprocessing.StandardScaler()),
            ('feature_selection', feat_sel),
            ('classification', clf)])
pl.fit(X,y)

现在,当我在新的集合上应用 pl 时,

pl.predict(X_classify);

是否将重新应用 RandomizedLogisticRegression 或在训练中选择的列是否将用于新数据?如果没有,是否有一种方法可以让流水线区分应该应用于新输入的特征选择器和特征 extractors/scalers/other 转换?在我确定之前,我将跳过管道功能,只是手动执行每个步骤并维护状态。

谢谢!

如果您调用 pl.predict,管道会在预处理和特征选择步骤中调用 transform。 这意味着训练中选择的特征将从测试数据中选择(这里唯一有意义的东西)。

这里的 "apply" 是什么意思不清楚。调用 "predict" 时不会学到任何新内容,但所有步骤都将与 "transform".

一起使用