StackingRegressor#

class sklearn.ensemble.StackingRegressor(estimators, final_estimator=None, *, cv=None, n_jobs=None, passthrough=False, verbose=0)[Quelle]#

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

Stacked Generalization besteht darin, die Ausgaben einzelner Estimators zu stapeln und einen Regressor für die endgültige Vorhersage zu verwenden. Stacking ermöglicht es, die Stärken jedes einzelnen Estimators zu nutzen, indem seine Ausgaben als Eingabe für einen finalen Estimator verwendet werden.

Beachten Sie, dass estimators_ auf dem gesamten X trainiert werden, während final_estimator_ anhand von kreuzvalidierten Vorhersagen der Basis-Estimators mittels cross_val_predict trainiert wird.

Lesen Sie mehr im Benutzerhandbuch.

Hinzugefügt in Version 0.22.

Parameter:
estimatorsListe von (str, estimator)

Basis-Estimators, die 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.

final_estimatorestimator, standardmäßig=None

Ein Regressor, der zur Kombination der Basis-Estimators verwendet wird. Der Standard-Regressor ist ein RidgeCV.

cvint, kreuzvalidierungsgenerator, iterierbar oder „prefit“, standardmäßig=None

Bestimmt die Strategie der Kreuzvalidierungsteilung, 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 von Folds in einem (Stratified) KFold,

  • Ein Objekt, das als Kreuzvalidierungsgenerator verwendet wird,

  • Eine iterierbare Sequenz, die Trainings- und Test-Splits liefert,

  • "prefit", um anzunehmen, dass die estimators bereits trainiert sind. In diesem Fall werden die Estimators nicht neu trainiert.

Für Integer/None-Eingaben, wenn der Estimator ein Klassifikator ist und y entweder binär oder mehrklassig ist, wird 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 sind **keine** kreuzvalidierten Vorhersagen. Bitte beachten Sie, dass, wenn die Modelle auf denselben Daten trainiert wurden, um das Stacking-Modell zu trainieren, ein sehr hohes Risiko von Überanpassung besteht.

Hinzugefügt in Version 1.1: Die Option 'prefit' wurde in 1.1 hinzugefügt

Hinweis

Eine größere Anzahl von Splits bietet keine Vorteile, wenn die Anzahl der Trainingsbeispiele ausreichend groß ist. Tatsächlich erhöht sich die Trainingszeit. cv wird nicht für die Modellevaluierung, sondern für die Vorhersage verwendet.

n_jobsint, default=None

Die Anzahl der Jobs, die parallel für die fit aller estimators ausgeführt werden sollen. None bedeutet 1, es sei denn, Sie befinden sich in einem joblib.parallel_backend-Kontext. -1 bedeutet die Verwendung aller Prozessoren. Siehe Glossar für weitere Details.

passthroughbool, standardmäßig=False

Wenn False, werden nur die Vorhersagen der Estimators 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:
estimators_Liste von Estimators

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-Estimators über ihren Namen.

n_features_in_int

Anzahl der während des fits gesehenen Merkmale.

feature_names_in_ndarray mit Form (n_features_in_,)

Namen der Features, die während fit gesehen wurden. Nur definiert, wenn die zugrunde liegenden Estimators ein solches Attribut nach dem Training freigeben.

Hinzugefügt in Version 1.0.

final_estimator_estimator

Der Regressor, der auf die Ausgabe von estimators_ trainiert wurde und für die endgültigen Vorhersagen verantwortlich ist.

stack_method_Liste von str

Die von jedem Basis-Estimator verwendete Methode.

Siehe auch

StackingClassifier

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

Referenzen

[1]

Wolpert, David H. “Stacked generalization.” Neural networks 5.2 (1992): 241-259.

Beispiele

>>> from sklearn.datasets import load_diabetes
>>> from sklearn.linear_model import RidgeCV
>>> from sklearn.svm import LinearSVR
>>> from sklearn.ensemble import RandomForestRegressor
>>> from sklearn.ensemble import StackingRegressor
>>> X, y = load_diabetes(return_X_y=True)
>>> estimators = [
...     ('lr', RidgeCV()),
...     ('svr', LinearSVR(random_state=42))
... ]
>>> reg = StackingRegressor(
...     estimators=estimators,
...     final_estimator=RandomForestRegressor(n_estimators=10,
...                                           random_state=42)
... )
>>> from sklearn.model_selection import train_test_split
>>> X_train, X_test, y_train, y_test = train_test_split(
...     X, y, random_state=42
... )
>>> reg.fit(X_train, y_train).score(X_test, y_test)
0.3...
fit(X, y, **fit_params)[Quelle]#

Trainiert die 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.

yarray-like von Form (n_samples,)

Zielwerte.

**fit_paramsdict

Parameter, die an die zugrunde liegenden Estimators ü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 angepasste Instanz zurück.

fit_transform(X, y, **fit_params)[Quelle]#

Trainiert die Estimators und gibt die Vorhersagen 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.

yarray-like von Form (n_samples,)

Zielwerte.

**fit_paramsdict

Parameter, die an die zugrunde liegenden Estimators ü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:
y_predsndarray der Form (n_samples, n_estimators)

Vorhersageergebnisse für jeden Estimator.

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

Eingabe-Features. Die Namen der Eingabe-Features werden nur verwendet, wenn passthrough auf True gesetzt ist.

  • Wenn input_features None ist, werden feature_names_in_ als Eingabe-Feature-Namen 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 verwendet, um die Ausgabe-Feature-Namen zu generieren.

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 übergebenen Parameter sowie die im Parameter estimators enthaltenen Estimators zurück.

Parameter:
deepbool, default=True

Wenn auf True gesetzt, werden die verschiedenen Estimators und deren Parameter abgerufen.

Gibt zurück:
paramsdict

Parameter- und Estimator-Namen, die ihren Werten oder Parameter-Namen, die ihren Werten zugeordnet sind.

property named_estimators#

Wörterbuch zum Zugriff auf beliebige trainierte Unter-Estimators über ihren Namen.

Gibt zurück:
Bunch
predict(X, **predict_params)[Quelle]#

Sagt Zielwerte für X voraus.

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 str -> obj

Parameter für den Aufruf von predict durch den final_estimator. Beachten Sie, dass dies verwendet werden kann, um Unsicherheiten von einigen Estimators mit return_std oder return_cov zurückzugeben. Seien Sie sich bewusst, dass nur Unsicherheiten im finalen Estimator berücksichtigt werden.

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

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

Geändert in Version 1.6: **predict_params kann über die Metadaten-Routing-API weitergeleitet werden.

Gibt zurück:
y_predndarray der Form (n_samples,) oder (n_samples, n_output)

Vorhergesagte Zielwerte.

score(X, y, sample_weight=None)[Quelle]#

Gibt den Bestimmtheitskoeffizienten auf Testdaten zurück.

Der Bestimmtheitskoeffizient \(R^2\) ist definiert als \((1 - \frac{u}{v})\), wobei \(u\) die Summe der quadrierten Residuen ist ((y_true - y_pred)** 2).sum() und \(v\) die Summe der quadrierten Abweichungen vom Mittelwert ist ((y_true - y_true.mean()) ** 2).sum(). Die bestmögliche Punktzahl ist 1.0 und sie kann negativ sein (da das Modell beliebig schlechter sein kann). Ein konstantes Modell, das immer den Erwartungswert von y vorhersagt, ohne die Eingabemerkmale zu berücksichtigen, würde eine \(R^2\)-Punktzahl von 0,0 erzielen.

Parameter:
Xarray-like der Form (n_samples, n_features)

Teststichproben. Für einige Schätzer kann dies eine vorab berechnete Kernelmatrix oder eine Liste von generischen Objekten sein, stattdessen mit der Form (n_samples, n_samples_fitted), wobei n_samples_fitted die Anzahl der für die Anpassung des Schätzers verwendeten Stichproben ist.

yarray-like der Form (n_samples,) oder (n_samples, n_outputs)

Wahre Werte für X.

sample_weightarray-like der Form (n_samples,), Standardwert=None

Stichprobengewichte.

Gibt zurück:
scorefloat

\(R^2\) von self.predict(X) bezogen auf y.

Anmerkungen

Die \(R^2\)-Punktzahl, die beim Aufruf von score für einen Regressor verwendet wird, nutzt multioutput='uniform_average' ab Version 0.23, um konsistent mit dem Standardwert von r2_score zu sein. Dies beeinflusst die score-Methode aller MultiOutput-Regressor (außer MultiOutputRegressor).

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 Parameter-Schlüssel können mit get_params() aufgelistet werden. Beachten Sie, dass Sie die Parameter der Estimators, die im Parameter estimators enthalten sind, direkt setzen können.

Parameter:
**paramskeyword arguments

Spezifische Parameter mit z.B. set_params(parameter_name=new_value). Zusätzlich zum Setzen der Parameter des Estimators können auch die einzelnen Estimators der Estimators gesetzt oder durch Setzen auf 'drop' entfernt werden.

Gibt zurück:
selfobject

Schätzer-Instanz.

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') StackingRegressor[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 die Vorhersagen 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)

Vorhersageergebnisse für jeden Estimator.