可以同时在 scikit-learn 管道中训练估算器吗?
Can one train estimators in a scikit-learn pipeline simultaneously?
是否可以在 scikit-learn 中执行以下操作?我们使用从特征到目标的给定映射来训练估计器 A,然后我们使用相同的数据(或映射)来训练另一个估计器 B,然后我们使用两个经过训练的估计器(A 和 B)的输出作为估计器 C 的输入作为目标,我们使用与以前相同的目标。
换句话说,我们训练了两个估计器(预测器),然后我们尝试组合来自估计器 A 和 B 的 "weak" 预测以获得更好的("stronger")预测。为了找到结合两种类型预测(来自估计器 A 和 B)的最佳方法,我们使用另一种训练(实际上我们以自动方式学习如何结合给定的预测)。
所以,我们有以下结构:
A -> C
B -> C
现在,我想要相同的 "tree" 个估算器。但是,我想同时训练他们。我的意思是,评估员 A 和 B 的专业知识不应根据他们预测目标的能力来评估。相反,我想通过他们改进来自估计器 C 的预测的能力来评估这两个估计器的专业知识。
您可以编写自己的转换器,将 transform
输入到预测中。像这样:
class PredictionTransformer(sklearn.base.BaseEstimator, sklearn.base.TransformerMixin):
def __init__(self, estimator):
self.estimator = estimator
def fit(self, X, y):
self.estimator.fit(X, y)
return self
def transform(self, X):
return self.estimator.predict_proba(X)
然后你可以用FeatureUnion
把你的变形金刚粘在一起。
也就是说,有一个警告:这种技术被称为 Stacking 并且当所有分类器都使用相同的数据进行训练时容易过度拟合,因此您可能想要编写更复杂的东西来划分训练分为两部分:一部分适合基本预测器,另一部分适合元学习器(结合基本预测的部分)。
是否可以在 scikit-learn 中执行以下操作?我们使用从特征到目标的给定映射来训练估计器 A,然后我们使用相同的数据(或映射)来训练另一个估计器 B,然后我们使用两个经过训练的估计器(A 和 B)的输出作为估计器 C 的输入作为目标,我们使用与以前相同的目标。
换句话说,我们训练了两个估计器(预测器),然后我们尝试组合来自估计器 A 和 B 的 "weak" 预测以获得更好的("stronger")预测。为了找到结合两种类型预测(来自估计器 A 和 B)的最佳方法,我们使用另一种训练(实际上我们以自动方式学习如何结合给定的预测)。
所以,我们有以下结构:
A -> C
B -> C
现在,我想要相同的 "tree" 个估算器。但是,我想同时训练他们。我的意思是,评估员 A 和 B 的专业知识不应根据他们预测目标的能力来评估。相反,我想通过他们改进来自估计器 C 的预测的能力来评估这两个估计器的专业知识。
您可以编写自己的转换器,将 transform
输入到预测中。像这样:
class PredictionTransformer(sklearn.base.BaseEstimator, sklearn.base.TransformerMixin):
def __init__(self, estimator):
self.estimator = estimator
def fit(self, X, y):
self.estimator.fit(X, y)
return self
def transform(self, X):
return self.estimator.predict_proba(X)
然后你可以用FeatureUnion
把你的变形金刚粘在一起。
也就是说,有一个警告:这种技术被称为 Stacking 并且当所有分类器都使用相同的数据进行训练时容易过度拟合,因此您可能想要编写更复杂的东西来划分训练分为两部分:一部分适合基本预测器,另一部分适合元学习器(结合基本预测的部分)。