我想用不同的随机状态训练多个LinearSVC模型,但我更希望并行进行。sklearn中有支持这种机制的吗?我知道GridSearch或一些集成方法隐式地这样做,但底层的工作原理是什么?
回答:
底层的工作原理是joblib
库,它例如为GridSearchCV
和一些集成方法提供了多处理支持。其Parallel
辅助类是一个非常方便的瑞士军刀,用于处理尴尬并行的for循环。
这是一个使用joblib并行训练多个LinearSVC模型的示例,使用4个进程和不同的随机状态:
from joblib import Parallel, delayedfrom sklearn.svm import LinearSVCimport numpy as npdef 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是使用不同种子训练的10个模型的列表