我一直试图为sklearn Pipeline体系结构设计一个转换器,它实际上过滤和删除了符合特定条件的记录--如果您愿意的话,这是一个WHERE子句。我发现这就是答案上写着“任何删除或添加样本的转换器,就现有版本的scikit学习而言,都不符合API",但它是7年前的版本。事情是否发生了变化,如果没有,什么是Pipeline哲学的好陈述,解释了为什么删除记录不符合它的概念?(我绝对理解为什么添加样本是没有意义的,我认为我理解为什么删除可能没有意义,但我想阅读一下这方面的官方原因,以便更好地掌握API的思想。)
发布于 2021-07-08 20:12:28
截至今天,这一声明仍然有效。
我不知道scikit-learn文档中有任何“正式”声明可以解决这个问题或证明这种设计选择是合理的。但是,我认为不支持这一点的主要原因是Pipeline对象只转换X。至少在这一点上,有一个来源
管道只转换观测数据(
X)。
因此,如果要将任何样本删除或添加到X中,则样本数将与y不一致。我认为这是这个设计选择的最可能的原因。
尽管如此,imblearn的管道实现实际上确实允许转换来改变样本大小,因为它允许在管道中包含重放(参见这里)。但是,这仅限于仅符合imblearn API方法的抽样方法。
https://stackoverflow.com/questions/68307502
复制相似问题