与sklearn并行训练多个模型?

Train multiple models in parallel with sklearn?

我想训练多个具有不同随机状态的 LinearSVC 模型,但我更喜欢并行训练。在 sklearn 中有支持这个的机制吗?我知道 Gridsearch 或一些集成方法正在隐式地做,但幕后是什么?

引擎盖下的 "thing" 是库 joblib,它支持 GridSearchCV 中的多处理和一些集成方法。它的 Parallel 帮手 class 是一把非常方便的瑞士刀,用于令人尴尬的平行 for 循环。

这是一个使用 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