単一の GridSearchCV 呼び出しで、さまざまな異なるモデル セットを使用して複数のデータ変換手法を実験したいテキスト データがいくつかあります。モデル 1、2、および 3 を使用したパイプラインでデータ変換 A が与えられ、モデル 4、5、および 6 を使用したパイプラインでデータ変換 B が与えられた場合、A と 1、2、または 3 のいずれかの組み合わせ OR 4、5、または 6 の B は、最良の予測結果を生成しますか?
現在、私が行っていることは、2 つの個別の GridSearchCV 呼び出しを行うことです。また、私がやりたいことに似たものについて、インターネットでいくつかの例を探しています。
この小さなチュートリアルを見つけました: https://www.kaggle.com/evanmiller/pipelines-gridsearch-awesome-ml-pipelinesですが、やりたいことの半分しかできません。以下の例を考えると (リンクされたチュートリアルの「Pipeline 4.0 - contVars + tax (FeatureUnion intro)」セクションから抜粋):
pipeline = Pipeline([
('unity', FeatureUnion(
transformer_list=[
('cont_portal', Pipeline([
('selector', PortalToColDimension(contVars)),
('cont_imp', Imputer(missing_values='NaN', strategy = 'median', axis=0)),
('scaler', StandardScaler())
])),
('tax_portal', Pipeline([
('selector', PortalToColDimension(taxVars)),
('tax_imp', Imputer(missing_values='NaN', strategy = 'most_frequent', axis=0)),
('scaler', MinMaxScaler(copy=True, feature_range=(0, 3)))
])),
],
)),
('column_purge', SelectKBest(k = 5)),
('lgbm', LGBMRegressor()),
])
parameters = {}
parameters['column_purge__k'] = [5, 10]
grid = GridSearchCV(pipeline, parameters, scoring = 'neg_mean_absolute_error', n_jobs= 2)
grid.fit(x_train, y_train)
print('Best score and parameter combination = ')
print(grid.best_score_)
print(grid.best_params_)
y_pred = grid.predict(x_valid)
「cont_portal」と「tax_portal」は 2 つの異なるデータ変換パイプライン (私がやりたいことの前半) を生成しますが、どちらも LGBMRegressor に向けられているようです。たとえば、「cont_portal」を LGBMRegressor のみで使用し、「tax_portal」を Logit モデルでのみ使用する代わりに、単一の一般的なパイプラインと GridSearchCV への単一の呼び出しを維持することは可能ですか?