我有几个独立的数据集[(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)
模型完成,然后再进入下一个数据集。我希望能够提交所有数据集并在后台处理协调。
本质上,我要问的是训练数据集是否可以是一个更改的参数?