具有多个不同数据集的GridSearchCV

时间:2019-02-04 21:19:07

标签: python python-3.x scikit-learn joblib gridsearchcv

我有几个独立的数据集[(X1, y1), (X2, y2) (X3, y3), (X4, y4)],我正在使用Dask分布式对多个模型进行并行评分。请注意,我只有四种估计器类型,并且每个估计器仅设置了一个参数(即,我没有进行超参数调整)。我可以为单个数据集(X1, y1)并行拟合多个模型:

dask_client = Client('tcp://your-dask-cluster')

gscv = GridSearchCV(pipeline, 
                    params, 
                    return_train_score=True, 
                    verbose=3,
                    refit=False
                   )

with joblib.parallel_backend('dask'):
    gscv.fit(X1, y1)

但是,我有许多额外的过程可以访问,这些地方可以为(X2, y2)(X3, y3)(X4, y4)建立模型。不幸的是,目前尚不清楚我该如何调整我的代码来实现这一目标,或者甚至可能。

天真的,我可以做:

with joblib.parallel_backend('dask'):
    gscv.fit(X1, y1)

gscv2 = GridSearchCV(pipeline, 
                     params, 
                     return_train_score=True, 
                     verbose=3,
                     refit=False
                    )

with joblib.parallel_backend('dask'):
    gscv2.fit(X2, y2)

gscv3 = GridSearchCV(pipeline, 
                     params, 
                     return_train_score=True, 
                     verbose=3,
                     refit=False
                    )

with joblib.parallel_backend('dask'):
    gscv3.fit(X3, y3)

gscv4 = GridSearchCV(pipeline, 
                     params, 
                     return_train_score=True, 
                     verbose=3,
                     refit=False
                    )
with joblib.parallel_backend('dask'):
    gscv4.fit(X4, y4)

但是接下来会有空闲的核心在等待所有(X1, y1)模型完成,然后再进入下一个数据集。我希望能够提交所有数据集并在后台处理协调。

本质上,我要问的是训练数据集是否可以是一个更改的参数?

0 个答案:

没有答案