在scikit-learn文档中,他们提供examples个自定义变形金刚,它们是 BaseEstimator 和 TransformerMixin 类的子类。我想知道,为什么在这些例子中使用了 BaseEstimator 子类?
为了尝试回答这个问题,我把它从 ItemSelector 类中删除了,但是Python没有抱怨。
答案 0 :(得分:3)
BaseEstimator
提供了get_params
和set_params
方法的实现。为什么需要这个?它可用于制作适用于GirdSearchCV
的模型。这确保了它在放置在管道中时表现良好。这只是BaseEstimator
在您提供的示例中,不执行网格搜索,这就是不需要它的原因。它被包含在大多数地方(我相信)以获得最佳实践,非常有必要证明您的代码可以将网格搜索插入到管道中。
答案 1 :(得分:2)
BaseEstimator 为 get_params 和 set_params 方法提供了默认实现,请参见[the source code]。这有助于使模型网格可以通过 GridSearchCV 进行搜索,以进行自动参数调整,并在与管道结合使用时表现良好。