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。
答案 0 :(得分:2)
要将参数传递给内部对象,您需要将其引用为'mainobject__internalobject__param'
。
尝试
'DecisionTreeRegr__regressor__max_depth'
代替'DecisionTreeRegr__max_depth'
。
与要传递给树的其他参数相同。 请参阅set_params()的文档。