StackingClassifier#
- class sklearn.ensemble.StackingClassifier(estimators, final_estimator=None, *, cv=None, stack_method='auto', n_jobs=None, passthrough=False, verbose=0)[Quelle]#
Stapel von Schätzern mit einem abschließenden Klassifikator.
Gestapelte Generalisierung besteht darin, die Ausgaben einzelner Estimator zu stapeln und einen Klassifikator zu verwenden, um die endgültige Vorhersage zu berechnen. Stacking ermöglicht es, die Stärken jedes einzelnen Estimators zu nutzen, indem deren Ausgabe als Eingabe für einen End-Estimator verwendet wird.
Beachten Sie, dass
estimators_auf dem gesamtenXtrainiert werden, währendfinal_estimator_mit kreuzvalidierten Vorhersagen der Basis-Estimator unter Verwendung voncross_val_predicttrainiert wird.Mehr dazu im Benutzerhandbuch.
Hinzugefügt in Version 0.22.
- Parameter:
- estimatorsListe von (String, Estimator)
Basis-Estimator, die zusammen gestapelt werden. Jedes Element der Liste ist als Tupel aus einem String (d. h. Name) und einer Estimator-Instanz definiert. Ein Estimator kann mit
set_paramsauf 'drop' gesetzt werden.Der Typ des Estimators wird im Allgemeinen als Klassifikator erwartet. Man kann jedoch für einige Anwendungsfälle (z. B. Ordinalregression) einen Regressor übergeben.
- final_estimatorEstimator, Standardwert=None
Ein Klassifikator, der verwendet wird, um die Basis-Estimator zu kombinieren. Der Standardklassifikator ist ein
LogisticRegression.- cvInteger, Kreuzvalidierungsgenerator, Iterable oder „prefit“, Standardwert=None
Bestimmt die Kreuzvalidierungs-Splitting-Strategie, die in
cross_val_predictzum Trainieren vonfinal_estimatorverwendet wird. Mögliche Eingaben für cv sind:None, um die Standard-5-fache Kreuzvalidierung zu verwenden,
Integer, zur Angabe der Anzahl der Folds in einem (Stratified) KFold,
Ein Objekt, das als Kreuzvalidierungsgenerator verwendet wird,
Ein Iterable, das Trainings-/Test-Splits liefert,
"prefit", um davon auszugehen, dass dieestimatorsbereits trainiert sind. In diesem Fall werden die Estimator nicht neu trainiert.
Für Integer/None-Eingaben wird, wenn der Estimator ein Klassifikator ist und y entweder binär oder multiklass ist,
StratifiedKFoldverwendet. In allen anderen Fällen wirdKFoldverwendet. Diese Splitter werden mitshuffle=Falseinstanziiert, sodass die Splits über Aufrufe hinweg gleich bleiben.Siehe Benutzerhandbuch für die verschiedenen Kreuzvalidierungsstrategien, die hier verwendet werden können.
Wenn „prefit“ übergeben wird, wird angenommen, dass alle
estimatorsbereits trainiert wurden. Derfinal_estimator_wird auf den Vorhersagen derestimatorsauf dem gesamten Trainingsdatensatz trainiert und es handelt sich **nicht** um kreuzvalidierte Vorhersagen. Bitte beachten Sie, dass, wenn die Modelle auf denselben Daten trainiert wurden, um das Stacking-Modell zu trainieren, ein sehr hohes Risiko für Überanpassung besteht.Hinzugefügt in Version 1.1: Die Option 'prefit' wurde in 1.1 hinzugefügt
Hinweis
Eine größere Anzahl von Splits wird keine Vorteile bringen, wenn die Anzahl der Trainingsstichproben groß genug ist. Tatsächlich wird sich die Trainingszeit erhöhen.
cvwird nicht zur Modellbewertung, sondern zur Vorhersage verwendet.- stack_method{„auto“, „predict_proba“, „decision_function“, „predict“}, Standardwert=„auto“
Methoden, die für jeden Basis-Estimator aufgerufen werden. Es kann sein:
wenn 'auto', wird versucht, für jeden Estimator
'predict_proba','decision_function'oder'predict'in dieser Reihenfolge aufzurufen.andernfalls eine von
'predict_proba','decision_function'oder'predict'. Wenn die Methode vom Estimator nicht implementiert ist, wird ein Fehler ausgelöst.
- n_jobsint, default=None
Die Anzahl der gleichzeitig auszuführenden Jobs für
fitallerestimators.Nonebedeutet 1, es sei denn, es befindet sich in einemjoblib.parallel_backendKontext. -1 bedeutet Verwendung aller Prozessoren. Siehe Glossar für weitere Details.- passthroughbool, Standardwert=False
Wenn False, werden nur die Vorhersagen der Estimator als Trainingsdaten für
final_estimatorverwendet. Wenn True, wirdfinal_estimatorsowohl auf den Vorhersagen als auch auf den ursprünglichen Trainingsdaten trainiert.- verboseint, default=0
Verbositätsstufe.
- Attribute:
- classes_ndarray der Form (n_classes,) oder Liste von ndarray, wenn
yvom Typ"multilabel-indicator"ist. Klassenbezeichnungen.
- estimators_Liste von Estimator
Die Elemente des Parameters
estimators, die auf den Trainingsdaten trainiert wurden. Wenn ein Estimator auf 'drop' gesetzt wurde, erscheint er nicht inestimators_. Wenncv="prefit", wirdestimators_aufestimatorsgesetzt und nicht erneut trainiert.- named_estimators_
Bunch Attribut zum Zugriff auf beliebige trainierte Unter-Estimator nach Namen.
n_features_in_intAnzahl der während des fits gesehenen Merkmale.
- feature_names_in_ndarray mit Form (
n_features_in_,) Namen von Merkmalen, die während fit gesehen wurden. Nur definiert, wenn die zugrunde liegenden Estimator ein solches Attribut nach dem Trainieren bereitstellen.
Hinzugefügt in Version 1.0.
- final_estimator_Estimator
Der auf den Ausgaben von
estimators_trainierte Klassifikator, der für die endgültigen Vorhersagen verantwortlich ist.- stack_method_Liste von Strings
Die von jedem Basis-Estimator verwendete Methode.
- classes_ndarray der Form (n_classes,) oder Liste von ndarray, wenn
Siehe auch
StackingRegressorStapel von Schätzern mit einem abschließenden Regressor.
Anmerkungen
Wenn
predict_probavon jedem Estimator verwendet wird (d. h. meistens fürstack_method='auto'oder speziell fürstack_method='predict_proba'), wird die erste Spalte, die von jedem Estimator vorhergesagt wird, bei einem binären Klassifizierungsproblem weggelassen. Tatsächlich wären beide Merkmale perfekt kollinear.In einigen Fällen (z. B. Ordinalregression) kann man Regressoren als erste Ebene des
StackingClassifierübergeben. Beachten Sie jedoch, dassyintern in einer numerisch aufsteigenden oder lexikographischen Reihenfolge kodiert wird. Wenn diese Reihenfolge nicht angemessen ist, sollte man die Klassen vor dem Aufruf von fit manuell numerisch kodieren.Referenzen
[1]Wolpert, David H. “Stacked generalization.” Neural networks 5.2 (1992): 241-259.
Beispiele
>>> from sklearn.datasets import load_iris >>> from sklearn.ensemble import RandomForestClassifier >>> from sklearn.svm import LinearSVC >>> from sklearn.linear_model import LogisticRegression >>> from sklearn.preprocessing import StandardScaler >>> from sklearn.pipeline import make_pipeline >>> from sklearn.ensemble import StackingClassifier >>> X, y = load_iris(return_X_y=True) >>> estimators = [ ... ('rf', RandomForestClassifier(n_estimators=10, random_state=42)), ... ('svr', make_pipeline(StandardScaler(), ... LinearSVC(random_state=42))) ... ] >>> clf = StackingClassifier( ... estimators=estimators, final_estimator=LogisticRegression() ... ) >>> from sklearn.model_selection import train_test_split >>> X_train, X_test, y_train, y_test = train_test_split( ... X, y, stratify=y, random_state=42 ... ) >>> clf.fit(X_train, y_train).score(X_test, y_test) 0.9...
- decision_function(X)[Quelle]#
Entscheidungsfunktion für Stichproben in
Xunter Verwendung des End-Estimators.- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features)
Trainingsvektoren, wobei
n_samplesdie Anzahl der Stichproben undn_featuresdie Anzahl der Merkmale ist.
- Gibt zurück:
- decisionsndarray der Form (n_samples,), (n_samples, n_classes) oder (n_samples, n_classes * (n_classes-1) / 2)
Die vom End-Estimator berechnete Entscheidungsfunktion.
- fit(X, y, **fit_params)[Quelle]#
Trainiert die Estimator.
- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features)
Trainingsvektoren, wobei
n_samplesdie Anzahl der Stichproben undn_featuresdie Anzahl der Merkmale ist.- yarray-like von Form (n_samples,)
Zielwerte. Beachten Sie, dass
yintern in einer numerisch aufsteigenden oder lexikographischen Reihenfolge kodiert wird. Wenn die Reihenfolge wichtig ist (z. B. bei Ordinalregression), sollten Sie das Zielyvor dem Aufruf von fit numerisch kodieren.- **fit_paramsdict
Parameter, die an die zugrunde liegenden Estimator übergeben werden.
Hinzugefügt in Version 1.6: Nur verfügbar, wenn
enable_metadata_routing=True, was durch Setzen vonsklearn.set_config(enable_metadata_routing=True)erfolgen kann. Siehe Metadaten-Routing Benutzerhandbuch für weitere Details.
- Gibt zurück:
- selfobject
Gibt eine trainierte Instanz des Estimators zurück.
- fit_transform(X, y=None, **fit_params)[Quelle]#
An Daten anpassen, dann transformieren.
Passt den Transformer an
Xundymit optionalen Parameternfit_paramsan und gibt eine transformierte Version vonXzurück.- Parameter:
- Xarray-like der Form (n_samples, n_features)
Eingabestichproben.
- yarray-like der Form (n_samples,) oder (n_samples, n_outputs), Standardwert=None
Zielwerte (None für unüberwachte Transformationen).
- **fit_paramsdict
Zusätzliche Fit-Parameter. Nur übergeben, wenn der Estimator zusätzliche Parameter in seiner
fit-Methode akzeptiert.
- Gibt zurück:
- X_newndarray array der Form (n_samples, n_features_new)
Transformiertes Array.
- get_feature_names_out(input_features=None)[Quelle]#
Holt die Ausgabemerkmale für die Transformation.
- Parameter:
- input_featuresarray-like von str oder None, default=None
Eingabemerkmale. Die Namen der Eingabemerkmale werden nur verwendet, wenn
passthroughTrueist.Wenn
input_featuresNoneist, werdenfeature_names_in_als Eingabemerkmale verwendet. Wennfeature_names_in_nicht definiert ist, werden Namen generiert:[x0, x1, ..., x(n_features_in_ - 1)].Wenn
input_featuresein Array-ähnliches Objekt ist, mussinput_featuresmitfeature_names_in_übereinstimmen, wennfeature_names_in_definiert ist.
Wenn
passthroughFalseist, werden nur die Namen derestimatorszur Generierung der Ausgabemerkmalsnamen verwendet.
- Gibt zurück:
- feature_names_outndarray von str-Objekten
Transformierte Merkmalnamen.
- get_metadata_routing()[Quelle]#
Holt das Metadaten-Routing dieses Objekts.
Bitte prüfen Sie im Benutzerhandbuch, wie der Routing-Mechanismus funktioniert.
Hinzugefügt in Version 1.6.
- Gibt zurück:
- routingMetadataRouter
Ein
MetadataRouter, der die Routing-Informationen kapselt.
- get_params(deep=True)[Quelle]#
Ruft die Parameter eines Estimators aus dem Ensemble ab.
Gibt die im Konstruktor angegebenen Parameter sowie die im Parameter
estimatorsenthaltenen Estimator zurück.- Parameter:
- deepbool, default=True
Wenn dies auf True gesetzt wird, werden die verschiedenen Estimator und die Parameter der Estimator abgerufen.
- Gibt zurück:
- paramsdict
Parameter- und Estimator-Namen, die ihren Werten oder Parameternamen, die ihren Werten zugeordnet sind, zugeordnet sind.
- property named_estimators#
Wörterbuch zum Zugriff auf beliebige trainierte Unter-Estimator nach Namen.
- Gibt zurück:
- predict(X, **predict_params)[Quelle]#
Vorhersagen von Zielwerten für X.
- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features)
Trainingsvektoren, wobei
n_samplesdie Anzahl der Stichproben undn_featuresdie Anzahl der Merkmale ist.- **predict_paramsdict von String -> obj
Parameter für den Aufruf von
predictdurchfinal_estimator. Beachten Sie, dass dies verwendet werden kann, um Unsicherheiten von einigen Estimator mitreturn_stdoderreturn_covzurückzugeben. Beachten Sie, dass dies nur die Unsicherheit im End-Estimator berücksichtigt.Wenn
enable_metadata_routing=False(Standard): Parameter, die direkt an die Methodepredictdesfinal_estimatorübergeben werden.Wenn
enable_metadata_routing=True: Parameter, die sicher an die Methodepredictdesfinal_estimatorweitergeleitet werden. Siehe Metadaten-Routing Benutzerhandbuch für weitere Details.
Geändert in Version 1.6:
**predict_paramskönnen über die Metadaten-Routing-API weitergeleitet werden.
- Gibt zurück:
- y_predndarray der Form (n_samples,) oder (n_samples, n_output)
Vorhergesagte Zielwerte.
- predict_proba(X)[Quelle]#
Vorhersagt Klassenwahrscheinlichkeiten für
Xunter Verwendung des End-Estimators.- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features)
Trainingsvektoren, wobei
n_samplesdie Anzahl der Stichproben undn_featuresdie Anzahl der Merkmale ist.
- Gibt zurück:
- probabilitiesndarray der Form (n_samples, n_classes) oder Liste von ndarray der Form (n_output,)
Die Klassenwahrscheinlichkeiten der Eingabemuster.
- score(X, y, sample_weight=None)[Quelle]#
Gibt die Genauigkeit für die bereitgestellten Daten und Bezeichnungen zurück.
Bei der Multi-Label-Klassifizierung ist dies die Subset-Genauigkeit, eine strenge Metrik, da für jede Stichprobe verlangt wird, dass jede Label-Menge korrekt vorhergesagt wird.
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Teststichproben.
- yarray-like der Form (n_samples,) oder (n_samples, n_outputs)
Wahre Bezeichnungen für
X.- sample_weightarray-like der Form (n_samples,), Standardwert=None
Stichprobengewichte.
- Gibt zurück:
- scorefloat
Mittlere Genauigkeit von
self.predict(X)in Bezug aufy.
- set_output(*, transform=None)[Quelle]#
Ausgabecontainer festlegen.
Siehe Einführung in die set_output API für ein Beispiel zur Verwendung der API.
- Parameter:
- transform{“default”, “pandas”, “polars”}, default=None
Konfiguriert die Ausgabe von
transformundfit_transform."default": Standardausgabeformat eines Transformers"pandas": DataFrame-Ausgabe"polars": Polars-AusgabeNone: Die Transformationskonfiguration bleibt unverändert
Hinzugefügt in Version 1.4: Die Option
"polars"wurde hinzugefügt.
- Gibt zurück:
- selfestimator instance
Schätzer-Instanz.
- set_params(**params)[Quelle]#
Setzt die Parameter eines Estimators aus dem Ensemble.
Gültige Parameternamen können mit
get_params()aufgelistet werden. Beachten Sie, dass Sie die Parameter der Estimator, die im Parameterestimatorsenthalten sind, direkt setzen können.- Parameter:
- **paramsSchlüsselwortargumente
Spezifische Parameter unter Verwendung von z. B.
set_params(parameter_name=new_value). Zusätzlich zum Setzen der Parameter des Estimators können auch die einzelnen Estimator der Estimator gesetzt oder durch Setzen auf 'drop' entfernt werden.
- Gibt zurück:
- selfobject
Schätzer-Instanz.
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') StackingClassifier[Quelle]#
Konfiguriert, ob Metadaten für die
score-Methode angefordert werden sollen.Beachten Sie, dass diese Methode nur relevant ist, wenn dieser Schätzer als Unter-Schätzer innerhalb eines Meta-Schätzers verwendet wird und Metadaten-Routing mit
enable_metadata_routing=Trueaktiviert ist (siehesklearn.set_config). Bitte lesen Sie das Benutzerhandbuch, um zu erfahren, wie der Routing-Mechanismus funktioniert.Die Optionen für jeden Parameter sind
True: Metadaten werden angefordert und, falls vorhanden, anscoreübergeben. Die Anforderung wird ignoriert, wenn keine Metadaten vorhanden sind.False: Metadaten werden nicht angefordert und der Meta-Schätzer übergibt sie nicht anscore.None: Metadaten werden nicht angefordert und der Meta-Schätzer löst einen Fehler aus, wenn der Benutzer sie bereitstellt.str: Metadaten sollten mit diesem Alias an den Meta-Schätzer übergeben werden und nicht mit dem ursprünglichen Namen.
Der Standardwert (
sklearn.utils.metadata_routing.UNCHANGED) behält die bestehende Anforderung bei. Dies ermöglicht es Ihnen, die Anforderung für einige Parameter zu ändern und für andere nicht.Hinzugefügt in Version 1.3.
- Parameter:
- sample_weightstr, True, False, oder None, Standardwert=sklearn.utils.metadata_routing.UNCHANGED
Metadaten-Routing für den Parameter
sample_weightinscore.
- Gibt zurück:
- selfobject
Das aktualisierte Objekt.
- transform(X)[Quelle]#
Gibt Klassennamen oder Wahrscheinlichkeiten für X für jeden Estimator zurück.
- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features)
Trainingsvektoren, wobei
n_samplesdie Anzahl der Stichproben undn_featuresdie Anzahl der Merkmale ist.
- Gibt zurück:
- y_predsndarray der Form (n_samples, n_estimators) oder (n_samples, n_classes * n_estimators)
Vorhersageergebnisse für jeden Estimator.