2015-04-12 12 views
5

Chcę trenować wiele modeli LinearSVC z różnymi przypadkowymi stanami, ale wolę robić to równolegle. Czy istnieje mechanizm wspierający to w sklearn? Wiem, że Gridsearch lub niektóre metody zespołowe działają w sposób dorozumiany, ale co jest pod maską?Trenować wiele modeli równolegle ze sklearn?

+0

Nie rób tego! Losowość w LinearSVC jest heurystyką, aby przyspieszyć. Po prostu ustaw wyższą tolerancję lub użyj '' SVC (kernel = "linear") ''. –

Odpowiedz

8

"Rzeczą" pod maską jest biblioteka joblib, która zasila na przykład wiele procesorów w GridSearchCV i niektórych metodach zespołu. To klasa pomocnicza Parallel jest bardzo przydatnym szwajcarskim nożem dla zawstydzająco równoległych pętli.

To jest przykład trenować wiele modeli LinearSVC z różnych stanów losowych równolegle z 4 procesów za pomocą joblib:

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 
Powiązane problemy