在TransformedTargetRegressor中引用参数

时间:2018-04-09 10:03:23

标签: scikit-learn

Sklearn 20-dev有一项新功能 - sklearn.compose.TransformedTargetRegressor。考虑将它与sklearn.model_selection.GridSearchCV一起使用。

pipelines = {
    'P0_baseline': {
        'tuned_parameters': {
            'feature_encoder__handle_unknown': ['ignore'],
            'DecisionTreeRegr__max_depth': [5, 15, 45, 135],
            'DecisionTreeRegr__random_state': [42],
            'preprocessing__validate': [False]
        },
        'pipeline': sklearn.pipeline.Pipeline([
            ('preprocessing', FunctionTransformer(my_preprocessing_function)),
            ('feature_encoder', sklearn.preprocessing.CategoricalEncoder()),
            ('DecisionTreeRegr', TransformedTargetRegressor(
                regressor=sklearn.tree.DecisionTreeRegressor(),
                func=np.log,
                inverse_func=np.exp
            ))
        ])
    },
}

问题是“DecisionTreeRegr__max_depth'和' DecisionTreeRegr__random_state'不是传递给TransformedTargetRegressor,而是传递给DecisionTreeRegressor。

1 个答案:

答案 0 :(得分:2)

要将参数传递给内部对象,您需要将其引用为'mainobject__internalobject__param'

尝试

'DecisionTreeRegr__regressor__max_depth'代替'DecisionTreeRegr__max_depth'

与要传递给树的其他参数相同。 请参阅set_params()的文档。