我使用管道和堆叠分类器来构建分类管道。在我的设置中,我希望将一些额外的原始特征传递给最终估计器,以及上一级模型的预测。从图表上看,如下所示:
我仍然希望利用管道(除了添加Feat x/y之外,我已经用它设置了所有东西)和StackingClassifier来实现这一点,因为它非常干净地处理端到端的堆叠模型训练。然而,我看不到一个选项,添加原始功能的预测之前的“水平”的模型。有什么好办法吗
注:输入到最终估计器的特征与输入到模型1和模型2的特征不同,因此我不寻找pass_through=True标志
Tags:
这不是一个快速的特性,但我可以想出两种方法来组合它,同时仍然使用
StackingClassifier
自动化。每一个都有一些缺点在预测中添加额外的功能
制作一个虚拟预测器,它通过返回输入来“预测”,并将其用作基本估计器,从而将额外的特征传递给元估计器。使用
ColumnTransformer
选择基本估计量的特征或传递特征使用直通并选择基本要素
为元估计量使用一个组合,该组合从基本估计量和期望的额外特征中选择下一个特征到预测。这有点令人担忧,因为你必须知道你得到了正确的列顺序(直到sklearn处理完功能名称)。也就是说,在下面的代码中,特征0和1是预测的概率(如果叠加方法不是唯一的
predict_proba
,则由于类预测为负,因此需要为1和3!),4和5是目标传递变量(在原始帧中索引为2和3)模型图:
在威斯康星州乳腺癌数据集in this notebook上查看整个事件