【问题标题】:Sklearn Pipeline - How to inherit get_params in custom Transformer (not Estimator)Sklearn Pipeline - 如何在自定义 Transformer(不是 Estimator)中继承 get_params
【发布时间】:2016-12-29 18:19:21
【问题描述】:

我在 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

我可以通过从 BaseEstimator 继承来获得“get_params”,而不是我当前的代码仅从 TransformerMixin 继承。但我的变压器不是估算器。从 BaseEstimator 继承非估计器有什么缺点吗?或者这是为管道中的任何转换器(无论是否估计器)获取 get_params 的推荐方法?

【问题讨论】:

  • 我投了赞成票,但我不知道您的问题的答案,但您应该使用 UpperCamelCase 命名类。请为我做这件事。这让我发疯了。
  • 谢谢,胡安帕。你是对的。相应编辑python.org/dev/peps/pep-0008/#class-names
  • @MaxPower 您的MyPipelineTransformer 是否在管道中封装了多个步骤?
  • 这个问题是关于一个变压器,它是一个更大的 sklearn 管道的一个组件

标签: python inheritance scikit-learn pipeline


【解决方案1】:

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

class FunctionTransformer(BaseEstimator, TransformerMixin)

【讨论】:

    猜你喜欢
    • 2019-07-20
    • 2020-07-27
    • 2020-04-01
    • 2017-08-31
    • 2016-09-13
    • 1970-01-01
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多