与sklearn并行训练多个模型?

ero*_*gol 6 machine-learning scikit-learn python-multiprocessing

我想训练具有不同随机状态的多个LinearSVC模型,但我更愿意并行执行.sklearn中是否有支持此功能的机制?我知道Gridsearch或者一些集合方法正在暗中进行,但是幕后的内容是什么?

YS-*_*S-L 14

引擎盖下的"东西"就是图书馆joblib,它可以提供多处理GridSearchCV和一些整体方法.它的Parallel辅助类是一个非常方便的瑞士刀,令人尴尬的并行循环.

这是使用joblib与4个进程并行训练具有不同随机状态的多个LinearSVC模型的示例:

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
Run Code Online (Sandbox Code Playgroud)