【问题标题】:In sklearn, does a fitted pipeline reapply every transform?在 sklearn 中,拟合的管道是否会重新应用每个转换?
【发布时间】:2015-09-07 09:43:57
【问题描述】:

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

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

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,还是要在新数据中使用在训练中选择的列?如果没有,管道是否有办法区分特征选择器和特征提取器/缩放器/其他应应用于新输入的转换?在我确定之前,我会跳过管道功能,只是手动执行每个步骤并维护状态。

谢谢!

【问题讨论】:

    标签: python scikit-learn pipeline feature-selection


    【解决方案1】:

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

    不清楚您在这里所说的“申请”是什么意思。调用“predict”时不会学到任何新内容,但所有步骤都将与“transform”一起使用。

    【讨论】:

    • 谢谢。你说的很有道理,只是一种奇怪的偏执狂。
    • 我现在还看到,通过调用 pl.steps,我可以检索每个单独的对象。不应该怀疑 sklearn。
    猜你喜欢
    • 1970-01-01
    • 2016-07-06
    • 2018-02-16
    • 2013-10-16
    • 2021-09-17
    • 2021-09-01
    • 2017-01-17
    • 2020-12-20
    • 2016-07-12
    相关资源
    最近更新 更多