sklearn管道和过滤掉记录



我一直在尝试为sklearnPipeline体系结构设计一个转换器,它可以在管道过程中过滤和删除符合某些条件的记录-如果愿意的话,可以使用WHERE子句。我找到了这样一个答案:;从现有版本的scikit-learn开始,任何丢弃或添加样本的变压器都不符合API";,但这是7年前的事了。事情发生了变化吗?如果没有,Pipeline哲学的一个好的陈述是什么,可以解释为什么删除记录不符合其概念?(我当然明白为什么添加样本没有意义,我认为我明白为什么删除可能没有意义,但我想阅读官方原因,以便更好地理解围绕API的想法。(

此语句至今仍然有效。

我不知道任何";官方的";scikit-learn文档中的声明,该声明解决了此问题或证明了此设计选择的合理性。然而,我认为这不受支持的主要原因是Pipeline对象只转换X。至少对此,有一个来源:

管道只转换观测到的数据(X(。

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

也就是说,imblearn的管道实现实际上允许改变样本大小的转换,因为它允许在管道中包括重采样器(请参阅此处(。但是,这仅限于符合imblearnAPI方法的采样方法。

最新更新