如何通过/跳过管道取决于特定条件
Posted
技术标签:
【中文标题】如何通过/跳过管道取决于特定条件【英文标题】:How to passthrough / skip pipeline depend on certain condition 【发布时间】:2020-01-10 07:52:42 【问题描述】:我有以下用于一些数据预处理的 scikit 学习管道。
如果数据框中有分类特征,我想提取特征并通过 SimpleImputer 运行;如果没有这样的功能(即 dataframe['categoricals'] 不存在),我希望它只是“跳过”/通过管道并继续下一步。
如何做到这一点?
Pipeline ([
('extract', extract_feature(dataframe['categoricals]),
('fill', SimpleImputer(strategy='constant', fill_value='dummy')
])
【问题讨论】:
如果没有直接的方法可以跳过这一步,有没有办法构建一个“包装器”来传递 otpion(启用/禁用下一个管道)作为一些全局变量? 这能回答你的问题吗? Is it possible to toggle a certain step in sklearn pipeline? 【参考方案1】:在转换器周围实现一个包装器,给它一个参数,例如,if_skip,并打开/关闭这个参数来启用/禁用这个转换器。当然,您可以将 if_skip 设置为实例变量,例如 self.if_skip,并根据需要从上一个管道步骤中分配值
SkipSimpleImputer(if_skip=False,strategy='constant', fill_value='dummy')
class SkipSimpleImputer(SimpleImputer):
def __init__(if_skip=False, strategy='constant', fill_value='dummy')
pass
用 if else :( 包裹它,不是很好的解决方案,但至少它是一个解决方案,
【讨论】:
谢谢,是的,如果其他方法可行,但非常讨厌的解决方案。包装器似乎是一种干净的方法,我会尝试一下。以上是关于如何通过/跳过管道取决于特定条件的主要内容,如果未能解决你的问题,请参考以下文章
通过覆盖“检测到 CI,跳过 Git 挂钩安装”在 Jenkins 管道作业中安装 husky git 挂钩