我正在尝试为一个自定义案例运行网格搜索,该案例涉及一个包含pipeline作为其构造函数输入之一的估算器。
class DefaultEstimator(BaseEstimator, TransformerMixin):
def __init__(self, preprocessor, pipelines):
self.pipelines = pipelines
def fit(self, X, y=None):
for idx, each_pipeline in enumerate(self.pipelines):
each_pipeline.fit(X[idx], y)
return self
def transform(self, X):
transformed_data = []
for idx, each_pipeline in enumerate(self.pipelines):
transformed_data.append(each_pipeline.transform(X[idx))
return sp.hstack(transformed_data)
我的管道看起来像这样:
pipeline1 = trainer.create_pipeline(num_features=100)
pipeline2 = trainer.create_pipeline(num_features=50)
复合管道看起来像:
aggregated_pipeline = Pipeline([('contextual', DefaultEstimator([pipeline1, pipeline2])),
('classifier', Pipeline([('clf', SVM(random_state=1234, probability=True)]))
])
输入数据有两列,每列都有一个各自的管道(pipeline1和pipeline2)。
对于按键grid_params的clf可写成classifier__clf__C,classifier__clf__gamma等等。
现在的问题是:如何编写grid_params用于GridSearchCV(...)作为管道的步骤之一是不是一个管道对象,而定制估计对象?
LEATH
相关分类