2015-04-12 12 views
5

Ich möchte mehrere LinearSVC Modelle mit verschiedenen Zufallszuständen trainieren, aber ich bevorzuge es parallel zu tun. Gibt es einen Mechanismus, der dies in Sklearn unterstützt? Ich kenne Gridsearch oder einige Ensemble-Methoden implizit, aber was ist die Sache unter der Haube?Trainieren Sie mehrere Modelle parallel zu sklearn?

+0

das nicht tun Sie! Die Zufälligkeit in LinearSVC ist eine Heuristik zur Beschleunigung. Stellen Sie einfach die Toleranz höher, oder verwenden Sie '' SVC (kernel = "linear") ''. –

Antwort

8

Das "Ding" unter der Haube ist die Bibliothek joblib, die zum Beispiel die Multi-Processing in GridSearchCV und einige Ensemble-Methoden betreibt. Es ist Parallel Helfer Klasse ist ein sehr handliches Schweizer Messer für peinlich parallele for Schleifen.

Dies ist ein Beispiel mehrere LinearSVC Modelle mit unterschiedlichen zufälligen Zuständen parallel zu 4 Prozessen mit JOBLIB zu trainieren:

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 
Verwandte Themen