可以同时训练一个scikit-learn管道中的估算器吗?

时间:2015-05-21 13:15:41

标签: python machine-learning scipy scikit-learn pipeline

是否可以在scikit-learn中执行以下操作?我们使用从特征到目标的给定映射来训练估计器A,然后我们使用相同的数据(或映射)来训练另一个估计器B,然后我们使用两个训练的估计器(A和B)的输出作为估计器C的输入。作为目标,我们使用与以前相同的目标。

换句话说,我们训练了两个估算器(预测器),然后我们尝试将“弱”和#34;预测来自估算器A和B,以获得更好的(#34;更强的")预测。为了找到结合两种类型预测的最佳方法(来自估算器A和B),我们使用另一种训练(实际上我们以自动方式学习如何组合给定的预测)。

所以,我们有以下结构:

A -> C
B -> C

现在,我希望拥有相同的"树"估算师。但是,我想同时训练他们。我的意思是,估算器A和B的专业知识不应该通过它们预测目标的能力来评估。我想通过改进估算器C预测的能力来评估这两个估算器的专业性。

1 个答案:

答案 0 :(得分:3)

您可以编写自己的变换器,将@contextlib.contextmanager def wait_for_page_load(self, timeout=10): self.log.debug("Waiting for page to load at {}.".format(self.driver.current_url)) old_page = self.find_element_by_tag_name('html') yield WebDriverWait(self, timeout).until(staleness_of(old_page)) 输入到预测中。像这样:

transform

然后你可以使用FeatureUnion将变压器粘在一起。

那就是说,有一点需要注意:这种技术被称为Stacking,并且在使用相同的数据训练所有分类器时容易过度拟合,所以你可能想写一些更复杂的分区训练分为两部分:一部分适合基础预测因子,另一部分适合元学​​习者(结合基础预测的学习者)。