GridSearchCV с несколькими различными наборами данных - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть несколько независимых наборов данных [(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) будут завершены, прежде чем перейти к следующему набору данных.Я хочу иметь возможность отправить все наборы данных и обеспечить координацию за кулисами.

По сути, я спрашиваю, может ли обучающий набор данных быть параметром, который изменяется?

...