1

Donc, j'ai un classificateur qui ressemble àhyperparam'etres dans classificateur de vote

clf = VotingClassifier(estimators=[ 
     ('nn', MLPClassifier()), 
     ('gboost', GradientBoostingClassifier()), 
     ('lr', LogisticRegression()), 

     ], voting='soft') 

Et je veux essentiellement régler les hyperparamètres de chacun des estimateurs. Y a-t-il un moyen de régler ces "combinaisons" de classificateurs?

Merci

+2

Que pouvez-vous être plus précis sur vous avez essayé jusqu'à présent? Qu'en est-il de [GridSearchCV] (http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html#sklearn.model_selection.GridSearchCV)? –

Répondre

3

Vous pouvez le faire en utilisant GridSearchCV mais avec une petite modification. Dans le dictionnaire de paramètres au lieu de spécifier l'attrbute directement, vous devez utiliser la clé pour classfier dans l'objet VotingClassfier suivi de __ puis de l'attribut lui-même.

Découvrez cet exemple

from sklearn.linear_model import LogisticRegression 
from sklearn.svm import SVC 
from sklearn.ensemble import VotingClassifier 
from sklearn.model_selection import GridSearchCV 

X = np.array([[-1.0, -1.0], [-1.2, -1.4], [-3.4, -2.2], [1.1, 1.2],[-1.0, -1.0], [-1.2, -1.4], [-3.4, -2.2], [1.1, 1.2]]) 
y = np.array([1, 1, 2, 2,1, 1, 2, 2]) 

eclf = VotingClassifier(estimators=[ 
    ('svm', SVC(probability=True)), 
    ('lr', LogisticRegression()), 
    ], voting='soft') 

#Use the key for the classifier followed by __ and the attribute 
params = {'lr__C': [1.0, 100.0], 
     'svm__C': [2,3,4],} 

grid = GridSearchCV(estimator=eclf, param_grid=params, cv=2) 

grid.fit(X,y) 

print (grid.best_params_) 
#{'lr__C': 1.0, 'svm__C': 2} 
2

utilisation GridSearchCV

clf = VotingClassifier(
      estimators=[('lr',LogisticRegression()), ('gboost',GradientBoostingClassifier()),] 
      , voting='soft') 
#put the combination of parameters here 
p = [{'lr__C':[1,2],'gboost__n_estimator':[10,20]}] 

grid = GridSearchCV(clf,p,cv=5,scoring='neg_log_loss') 
grid.fit(X_train,Y_train)