5

Voglio addestrare più modelli LinearSVC con diversi stati casuali ma preferisco farlo in parallelo. C'è un meccanismo che supporta questo in sklearn? So che Gridsearch o alcuni metodi di ensemble stanno facendo implicitamente, ma qual è la cosa sotto il cofano?Allestire più modelli in parallelo con sklearn?

+0

non lo fanno! La casualità in LinearSVC è un'euristica per accelerare. Basta impostare la tolleranza più in alto, o magari usare '' SVC (kernel = "linear") ''. –

risposta

8

La "cosa" sotto il cofano è la libreria joblib, che alimenta ad esempio la multielaborazione in GridSearchCV e alcuni metodi di insieme. È la classe helper Parallel è un coltello svizzero molto utile per imbarazzante parallelo per loop.

Questo è un esempio di formare più modelli LinearSVC con diversi stati casuali in parallelo con 4 processi utilizzando 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