为什么我应该在 Scikit-Learn 管道中继承 BaseEstimator?

use*_*074 2 python python-3.x scikit-learn

在 scikit-learn 文档中,他们给出了自定义 Transformer 的示例,这些示例BaseEstimatorTransformerMixin类都子类化。我想知道,为什么在这些示例中使用BaseEstimator子类?

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

Har*_*pal 6

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

在您提供的示例中,没有执行网格搜索,这就是不需要它的原因。它被包含在大多数地方(我相信)用于最佳实践,本质上是未来证明您的代码以将网格搜索插入到管道中。