我想训练多个具有不同随机状态的LinearSVC模型,但我更喜欢并行进行。在 sklearn 中是否有支持这一点的机制?我知道 Gridsearch 或一些集成方法正在隐式地做,但引擎盖下的事情是什么?
引擎
盖下的"东西"是库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