sklearn 管道并过滤掉记录?
sklearn pipelines and filtering out records?
我一直在尝试为 sklearn
Pipeline
架构设计一个转换器,它实际上过滤和删除在管道过程中满足特定条件的记录 - WHERE
条款,如果你愿意的话。我发现 this SO answer 说“从现有版本的 scikit-learn 开始,任何删除或添加样本的转换器都不符合 API”,但它是 7 年前的。事情是否发生了变化?如果没有,Pipeline
哲学的一个很好的陈述是什么来解释为什么删除记录不符合其概念? (我完全明白为什么添加样本没有意义,我 认为 我明白为什么删除可能没有意义,但我想阅读官方原因以便更好地理解围绕 API.)
的思考
此声明在今天仍然有效。
我不知道 scikit-learn
的文档中有任何“官方”声明解决了这个问题或证明了这个设计选择。但是,我认为不支持的主要原因是 Pipeline
对象仅转换 X
。至少为此,有一个 source:
Pipelines only transform the observed data (X
).
因此,如果您将任何样本删除或添加到 X
,样本数量将与 y
不一致。我认为这是这种设计选择的最可能原因。
也就是说,imblearn
的管道实现实际上允许改变样本大小的转换,因为它允许在管道中包含重采样器(参见 here)。但是,这仅限于符合 imblearn
API 方法的采样方法。
我一直在尝试为 sklearn
Pipeline
架构设计一个转换器,它实际上过滤和删除在管道过程中满足特定条件的记录 - WHERE
条款,如果你愿意的话。我发现 this SO answer 说“从现有版本的 scikit-learn 开始,任何删除或添加样本的转换器都不符合 API”,但它是 7 年前的。事情是否发生了变化?如果没有,Pipeline
哲学的一个很好的陈述是什么来解释为什么删除记录不符合其概念? (我完全明白为什么添加样本没有意义,我 认为 我明白为什么删除可能没有意义,但我想阅读官方原因以便更好地理解围绕 API.)
此声明在今天仍然有效。
我不知道 scikit-learn
的文档中有任何“官方”声明解决了这个问题或证明了这个设计选择。但是,我认为不支持的主要原因是 Pipeline
对象仅转换 X
。至少为此,有一个 source:
Pipelines only transform the observed data (
X
).
因此,如果您将任何样本删除或添加到 X
,样本数量将与 y
不一致。我认为这是这种设计选择的最可能原因。
也就是说,imblearn
的管道实现实际上允许改变样本大小的转换,因为它允许在管道中包含重采样器(参见 here)。但是,这仅限于符合 imblearn
API 方法的采样方法。