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 gesamten X trainiert werden, während final_estimator_ mit kreuzvalidierten Vorhersagen der Basis-Estimator unter Verwendung von cross_val_predict trainiert 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_params auf '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_predict zum Trainieren von final_estimator verwendet 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 die estimators bereits 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, StratifiedKFold verwendet. In allen anderen Fällen wird KFold verwendet. Diese Splitter werden mit shuffle=False instanziiert, 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 estimators bereits trainiert wurden. Der final_estimator_ wird auf den Vorhersagen der estimators auf 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. cv wird 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 fit aller estimators. None bedeutet 1, es sei denn, es befindet sich in einem joblib.parallel_backend Kontext. -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_estimator verwendet. Wenn True, wird final_estimator sowohl 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 y vom 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 in estimators_. Wenn cv="prefit", wird estimators_ auf estimators gesetzt und nicht erneut trainiert.

named_estimators_Bunch

Attribut zum Zugriff auf beliebige trainierte Unter-Estimator nach Namen.

n_features_in_int

Anzahl 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.

Siehe auch

StackingRegressor

Stapel von Schätzern mit einem abschließenden Regressor.

Anmerkungen

Wenn predict_proba von jedem Estimator verwendet wird (d. h. meistens für stack_method='auto' oder speziell für stack_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, dass y intern 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 X unter Verwendung des End-Estimators.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Trainingsvektoren, wobei n_samples die Anzahl der Stichproben und n_features die 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_samples die Anzahl der Stichproben und n_features die Anzahl der Merkmale ist.

yarray-like von Form (n_samples,)

Zielwerte. Beachten Sie, dass y intern in einer numerisch aufsteigenden oder lexikographischen Reihenfolge kodiert wird. Wenn die Reihenfolge wichtig ist (z. B. bei Ordinalregression), sollten Sie das Ziel y vor 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 von sklearn.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 X und y mit optionalen Parametern fit_params an und gibt eine transformierte Version von X zurü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 passthrough True ist.

  • Wenn input_features None ist, werden feature_names_in_ als Eingabemerkmale verwendet. Wenn feature_names_in_ nicht definiert ist, werden Namen generiert: [x0, x1, ..., x(n_features_in_ - 1)].

  • Wenn input_features ein Array-ähnliches Objekt ist, muss input_features mit feature_names_in_ übereinstimmen, wenn feature_names_in_ definiert ist.

Wenn passthrough False ist, werden nur die Namen der estimators zur 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 estimators enthaltenen 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:
Bunch
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_samples die Anzahl der Stichproben und n_features die Anzahl der Merkmale ist.

**predict_paramsdict von String -> obj

Parameter für den Aufruf von predict durch final_estimator. Beachten Sie, dass dies verwendet werden kann, um Unsicherheiten von einigen Estimator mit return_std oder return_cov zurückzugeben. Beachten Sie, dass dies nur die Unsicherheit im End-Estimator berücksichtigt.

  • Wenn enable_metadata_routing=False (Standard): Parameter, die direkt an die Methode predict des final_estimator übergeben werden.

  • Wenn enable_metadata_routing=True: Parameter, die sicher an die Methode predict des final_estimator weitergeleitet werden. Siehe Metadaten-Routing Benutzerhandbuch für weitere Details.

Geändert in Version 1.6: **predict_params kö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 X unter Verwendung des End-Estimators.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Trainingsvektoren, wobei n_samples die Anzahl der Stichproben und n_features die 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 auf y.

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 transform und fit_transform.

  • "default": Standardausgabeformat eines Transformers

  • "pandas": DataFrame-Ausgabe

  • "polars": Polars-Ausgabe

  • None: 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 Parameter estimators enthalten 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=True aktiviert ist (siehe sklearn.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, an score übergeben. Die Anforderung wird ignoriert, wenn keine Metadaten vorhanden sind.

  • False: Metadaten werden nicht angefordert und der Meta-Schätzer übergibt sie nicht an score.

  • 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_weight in score.

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_samples die Anzahl der Stichproben und n_features die 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.