Ich versuche ein Ensemble von drei Klassifikatoren (Random Forest, Support Vector Machine und XGBoost) mit dem VotingClassifier () in scikit-learn zu erstellen. Ich finde jedoch, dass die Genauigkeit des Ensembles tatsächlich abnimmt anstatt zuzunehmen. Ich kann nicht herausfinden warum.
Hier ist der Code:
%Vor%Der XGBoost hat die höchste Genauigkeit, also habe ich sogar versucht, ihm mehr Gewicht zu geben, ohne Erfolg.
Was könnte ich falsch machen?
VotingClassifiers bieten nicht immer eine bessere Leistung, insbesondere wenn Sie bei schlecht kalibrierten Basismodellen Softvoting verwenden.
Für ein künstliches Beispiel sagen Sie, dass alle Modelle falsch sind, wenn sie falsch sind (sagen Sie eine Wahrscheinlichkeit von .99 für die falsche Klasse), sind aber nur ein wenig richtig, wenn sie richtig sind (sagen Sie eine Wahrscheinlichkeit von .51 für die richtige Klasse). Des Weiteren sagen 'rf' und 'svc' immer dann, wenn 'xgb' falsch ist und umgekehrt und jeder Klassifikator eine Genauigkeit von 50% hat.
Der von Ihnen implementierte Abstimmungsklassifikator würde eine Genauigkeit von 0% haben, da Sie eine weiche Abstimmung verwenden. Hier ist warum:
Tags und Links python machine-learning scikit-learn xgboost ensemble-learning