← retour aux snippets

sklearn VotingClassifier

agréger plusieurs modèles par vote dur ou mou

sklearn VotingClassifier

objectif

Expliquer et montrer comment agréger plusieurs modèles par vote dur ou mou.

code minimal

from sklearn.datasets import make_classification
from sklearn.ensemble import VotingClassifier, RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import GaussianNB

X, y = make_classification(n_samples=1000, n_features=20, random_state=0)
vc = VotingClassifier(
    estimators=[("lr", LogisticRegression(max_iter=1000)), ("rf", RandomForestClassifier()), ("gnb", GaussianNB())],
    voting="soft"
).fit(X, y)
vc.score(X, y)

utilisation

print(vc.transform([[0]*20]).shape)  # sorties intermédiaires empilées

variante(s) utile(s)

# vote dur (classes)
vd = VotingClassifier(estimators=vc.estimators, voting="hard").fit(X, y)
print(vd.score(X, y))

notes

  • Le vote mou requiert predict_proba de tous les estimateurs.
  • Pondérez chaque modèle via weights.