2017-10-16 4 views
1

Je suis en train de faire ce qui suit:Comment accorder des poids vote classificateur (Sklearn)

vc = VotingClassifier(estimators=[('gbc',GradientBoostingClassifier()), 
         ('rf',RandomForestClassifier()),('svc',SVC(probability=True))], 
         voting='soft',n_jobs=-1) 

params = {'weights':[[1,2,3],[2,1,3],[3,2,1]]} 
grid_Search = GridSearchCV(param_grid = params, estimator=vc) 
grid_Search.fit(X_new,y) 
print(grid_Search.best_Score_) 

En cela, je veux régler le paramètre weights. Si j'utilise GridSearchCV, cela prend beaucoup de temps. Comme il doit correspondre au modèle pour chaque itération. Ce qui n'est pas requis, je suppose. Mieux serait d'utiliser quelque chose comme prefit utilisé dans SelectModelFrom fonction de sklearn.model_selection.

Existe-t-il une autre option ou j'interprète quelque chose?

+0

GridSearchCV divisera les données en train et testera selon le 'cv' fourni, puis les marquera sur les données de test. Puisque vous ne voulez pas réajuster les estimateurs, sur quelles données voudriez-vous les noter: train, test ou toutes les données? –

+0

Si je fais le GridSearchCV, il créera des modèles pour chaque 'weight_list' que j'ai spécifié. Mais ce que je veux accomplir, c'est utiliser le même modèle pour tous les poids que je donne. Je veux utiliser 'prefit', mais il n'y a pas d'option comme' prefit' dans GridSeachCV –

+0

@VivekKumar J'ai modifié le code du problème pour une meilleure explication. Veuillez, voir. –

Répondre

0

The following code (dans mon repo) le feraient. Il contient une classe VotingClassifierCV. Il fait d'abord des prédictions croisées pour tous les classificateurs. Puis boucles sur tous les poids, en choisissant la meilleure combinaison, et en utilisant des prédictions pré-calculées.