与sklearn并行训练多个模型?

时间:2015-04-12 12:12:35

标签: machine-learning scikit-learn python-multiprocessing

我想训练具有不同随机状态的多个LinearSVC模型,但我更愿意并行执行。 sklearn中是否有支持此功能的机制?我知道Gridsearch或一些集合方法是隐含的,但是引擎盖下的东西是什么?

1 个答案:

答案 0 :(得分:13)

"""引擎盖下是库joblib,例如GridSearchCV中的多处理和一些集合方法。它的Parallel辅助类是一个非常方便的瑞士刀,用于令人尴尬的并行循环。

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

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