为什么我要在Scikit-Learn管道中将BaseEstimator子类化?

时间:2018-02-15 21:19:31

标签: python python-3.x scikit-learn

在scikit-learn文档中,他们提供examples个自定义变形金刚,它们是 BaseEstimator TransformerMixin 类的子类。我想知道,为什么在这些例子中使用了 BaseEstimator 子类?

为了尝试回答这个问题,我把它从 ItemSelector 类中删除了,但是Python没有抱怨。

2 个答案:

答案 0 :(得分:3)

BaseEstimator提供了get_paramsset_params方法的实现。为什么需要这个?它可用于制作适用于GirdSearchCV的模型。这确保了它在放置在管道中时表现良好。这只是BaseEstimator

的应用程序之一

在您提供的示例中,不执行网格搜索,这就是不需要它的原因。它被包含在大多数地方(我相信)以获得最佳实践,非常有必要证明您的代码可以将网格搜索插入到管道中。

答案 1 :(得分:2)

BaseEstimator get_params set_params 方法提供了默认实现,请参见[the source code]。这有助于使模型网格可以通过 GridSearchCV 进行搜索,以进行自动参数调整,并在与管道结合使用时表现良好。