Sklearn Pipeline - 如何在自定义Transformer(而不是Estimator)中继承get_params

时间:2016-08-23 04:30:57

标签: python inheritance scikit-learn pipeline

我在scikit-learn中有一个管道,它使用我定义的自定义变换器,如下所示:

class MyPipelineTransformer(TransformerMixin):

定义函数

__init__, fit() and transform()

但是,当我在RandomizedSearchCV中使用管道时,我收到以下错误:

  

' MyPipelineTransformer'对象没有属性' get_params'

我已在网上阅读(例如下面的链接)

(Python - sklearn) How to pass parameters to the customize ModelTransformer class by gridsearchcv

http://scikit-learn.org/stable/auto_examples/hetero_feature_union.html

我可以得到' get_params'继承自BaseEstimator,而不是仅继承TransformerMixin的当前代码。但我的变压器不是估算器。从BaseEstimator继承非估计量是否有任何不足之处?或者这是在管道中为任何变压器(估算器或非估算器)获取get_params的推荐方法吗?

1 个答案:

答案 0 :(得分:8)

是的,看起来这是实现这一目标的标准方法。例如in the source for sklearn.preprocessing我们有

Test Str$ing-------1End------------
Test

Str$ing
-------End------------