【问题标题】:sklearn pipelines and filtering out records?sklearn 管道和过滤记录?
【发布时间】:2021-09-19 06:24:28
【问题描述】:

我一直在尝试为sklearn Pipeline 架构设计一个转换器,它实际上过滤和删除在管道过程中满足特定标准的记录——如果你愿意的话,一个WHERE 子句。我发现this SO answer 说“任何删除或添加样本的转换器,就现有版本的 scikit-learn 而言,不符合 API”,但它来自 7 年前。事情是否发生了变化,如果没有,Pipeline 哲学的一个好的陈述是什么,它解释了为什么删除记录不符合它的概念? (我绝对明白为什么添加样本没有意义,我认为我明白为什么删除可能没有意义,但我想阅读官方原因以便更好地掌握周围的想法API。)

【问题讨论】:

    标签: python scikit-learn data-science


    【解决方案1】:

    该声明至今仍然有效。

    我不知道scikit-learn 的文档中有任何“官方”声明解决了这个问题或证明了这个设计选择的合理性。但是,我认为不支持的主要原因是Pipeline 对象仅转换X。至少为此,有一个source

    管道仅转换观察到的数据 (X)。

    因此,如果您将任何样本删除或添加到X,样本数将与y 不一致。我认为这是选择这种设计的最可能原因。

    话虽如此,imblearn 的管道实现实际上确实允许改变样本大小的转换,因为它允许在管道中包含重采样器(请参阅here)。但是,这仅限于符合imblearn API 方法的采样方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-06
      • 2013-03-14
      • 1970-01-01
      • 2019-08-19
      • 2020-05-07
      • 2014-02-17
      • 1970-01-01
      • 2019-06-18
      相关资源
      最近更新 更多