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?
5
A
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
non lo fanno! La casualità in LinearSVC è un'euristica per accelerare. Basta impostare la tolleranza più in alto, o magari usare '' SVC (kernel = "linear") ''. –