Python 什么';scikit学习管道中变压器重量的使用是什么?

Python 什么';scikit学习管道中变压器重量的使用是什么?,python,python-2.7,machine-learning,scikit-learn,Python,Python 2.7,Machine Learning,Scikit Learn,这只是scikit learn管道的一个小问题 在类sklearn.pipeline.FeatureUnion中,有一个transformer\u weights选项 变压器重量:dict,可选 :每个变压器特征的乘法权重。关键点是变压器名称、值和权重 我在一个例子中看到了这种用法,它为不同的特性赋予了不同的权重 transformer_weights={ 'subject': 0.8, 'body_bow': 0.5, 'body_sta

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

在类
sklearn.pipeline.FeatureUnion
中,有一个
transformer\u weights
选项

变压器重量:dict,可选
:每个变压器特征的乘法权重。关键点是变压器名称、值和权重

我在一个例子中看到了这种用法,它为不同的特性赋予了不同的权重

    transformer_weights={
        'subject': 0.8,
        'body_bow': 0.5,
        'body_stats': 1.0,
    },

这对我来说毫无意义,因为分类器稍后将为您学习权重。为什么还要麻烦使用它呢?

如果使用带惩罚的线性分类器,这将改变应用于每个特征块的惩罚量。
向上扩展功能意味着相对于其他功能,它们受到的惩罚更小。

是否有一种方法可以测试不同的权重,类似于网格搜索中的其他参数?如果愿意,可以使用网格搜索进行搜索。我如何访问它们,因为它们没有像transformers it classifiers那样分配标签?如果你做了
make_管道(make_union(Transformer1(),Transformer2()),Classifier())
那么
param_grid={'featureunion_transformer_weights':[[1,1],.1,9],[10,1000]}
应该可以工作。我知道这是很久以前回答的,但我只是想补充一点,我尝试了这个解决方案,却遇到了一个问题。您可以传入一个列表列表,它将运行,但是它不会按预期工作,您需要传入一个字典,其中键是特征联合的段的名称,例如
make_管道(make_联合(transformer1(),Transformer2()),Classifier()),然后param_grid={'featureunion_utransformer_weights':[dict](主语=1,body_bow=2),主语(主语=0.1,body_bow=0.9)}