在scikit-learn管道中使用transformer_weights有什么用?

Wei*_*Lin 10 python machine-learning python-2.7 scikit-learn

这只是scikit-learn管道的一个小问题.

在课堂上sklearn.pipeline.FeatureUnion,有一个transformer_weights选项.

transformer_weights:dict,optional
:每个变压器的特征的乘法权重.键是变换器名称,值是权重.

我在一个例子中看到了对不同特征赋予不同权重的用法.

    transformer_weights={
        'subject': 0.8,
        'body_bow': 0.5,
        'body_stats': 1.0,
    },
Run Code Online (Sandbox Code Playgroud)

这对我来说是无稽之谈,因为分类器将在以后为你学习加权.为什么还要费心呢?

And*_*ler 8

如果使用带惩罚的线性分类器,这将更改应用于每个要素块的惩罚量.缩放功能意味着相对于其他功能,它们将受到更少的惩罚.

  • 我知道很久以前就回答了这个问题,但我只是想补充说我尝试了这个解决方案并遇到了问题.您可以传入列表列表并且它将运行,但是它将无法按预期工作,您需要传入一个字典,其中键是功能联合的段的名称,例如`make_pipeline(make_union( Tranformer1(),Transformer2()),Classifier())然后param_grid = {'featureunion__transformer_weights':[dict(subject = 1,body_bow = 2),dict(subject = .1,body_bow = .9)]} (4认同)