Тренировать несколько моделей параллельно со 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
Другие вопросы по тегам