Тренировать несколько моделей параллельно со sklearn?
Я хочу обучить несколько моделей LinearSVC с разными случайными состояниями, но предпочитаю делать это параллельно. Есть ли механизм, поддерживающий это в sklearn? Я знаю, что Gridsearch или некоторые ансамблевые методы неявно работают, но что это за штука под капотом?
1 ответ
Решение
"Вещь" под капотом - библиотека joblib
который обеспечивает, например, мульти-обработку в GridSearchCV
и некоторые методы ансамбля. Это Parallel
helper class - очень удобный швейцарский нож для смущающе параллельных петель.
Это пример обучения нескольких моделей LinearSVC с различными случайными состояниями параллельно с 4 процессами с использованием joblib:
from joblib import Parallel, delayed
from sklearn.svm import LinearSVC
import numpy as np
def train_model(X, y, seed):
model = LinearSVC(random_state=seed)
return model.fit(X, y)
X = np.array([[1,2,3],[4,5,6]])
y = np.array([0, 1])
result = Parallel(n_jobs=4)(delayed(train_model)(X, y, seed) for seed in range(10))
# result is a list of 10 models trained using different seeds