2015-04-12 202 views
5

我想用不同的隨機狀態訓練多個LinearSVC模型,但我更願意並行執行。有沒有一種機制支持sklearn?我知道Gridsearch或者一些合奏方法正在暗中做,但底層是什麼?與sklearn平行訓練多個模型?

+0

不要那樣做! LinearSVC中的隨機性是加速的啓發式算法。只需將容差設置得更高,或者使用''SVC(kernel =「linear」)''。 –

回答

8

引擎蓋下的「東西」是庫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