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 gesamtenXtrainiert werden, währendfinal_estimator_anhand von kreuzvalidierten Vorhersagen der Basis-Estimators mittelscross_val_predicttrainiert 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_paramsauf '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_predictzum Trainieren vonfinal_estimatorverwendet wird. Mögliche Eingaben für cv sindNone, 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 dieestimatorsbereits 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
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 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.
cvwird nicht für die Modellevaluierung, sondern für die Vorhersage verwendet.- n_jobsint, default=None
Die Anzahl der Jobs, die parallel für die
fitallerestimatorsausgeführt werden sollen.Nonebedeutet 1, es sei denn, Sie befinden sich in einemjoblib.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_estimatorverwendet. Wenn True, wirdfinal_estimatorsowohl 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 inestimators_. Wenncv="prefit", wirdestimators_aufestimatorsgesetzt und nicht erneut trainiert.- named_estimators_
Bunch Attribut zum Zugriff auf beliebige trainierte Unter-Estimators über ihren Namen.
n_features_in_intAnzahl 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
StackingClassifierStapel 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_samplesdie Anzahl der Stichproben undn_featuresdie 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 vonsklearn.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_samplesdie Anzahl der Stichproben undn_featuresdie 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 vonsklearn.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
passthroughaufTruegesetzt ist.Wenn
input_featuresNoneist, werdenfeature_names_in_als Eingabe-Feature-Namen 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 derestimatorsverwendet, 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
estimatorsenthaltenen 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:
- 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_samplesdie Anzahl der Stichproben undn_featuresdie Anzahl der Merkmale ist.- **predict_paramsdict von str -> obj
Parameter für den Aufruf von
predictdurch denfinal_estimator. Beachten Sie, dass dies verwendet werden kann, um Unsicherheiten von einigen Estimators mitreturn_stdoderreturn_covzurückzugeben. Seien Sie sich bewusst, dass nur Unsicherheiten im finalen Estimator berücksichtigt werden.Wenn
enable_metadata_routing=False(Standard): Parameter, die direkt an diepredict-Methode desfinal_estimatorübergeben werden.Wenn
enable_metadata_routing=True: Parameter, die sicher an diepredict-Methode desfinal_estimatorweitergeleitet werden. Siehe Metadaten-Routing-Benutzerhandbuch für weitere Details.
Geändert in Version 1.6:
**predict_paramskann ü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 vonyvorhersagt, 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), wobein_samples_fitteddie 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 aufy.
Anmerkungen
Die \(R^2\)-Punktzahl, die beim Aufruf von
scorefür einen Regressor verwendet wird, nutztmultioutput='uniform_average'ab Version 0.23, um konsistent mit dem Standardwert vonr2_scorezu sein. Dies beeinflusst diescore-Methode aller MultiOutput-Regressor (außerMultiOutputRegressor).
- 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 Parameter-Schlüssel können mit
get_params()aufgelistet werden. Beachten Sie, dass Sie die Parameter der Estimators, die im Parameterestimatorsenthalten 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=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 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_samplesdie Anzahl der Stichproben undn_featuresdie Anzahl der Merkmale ist.
- Gibt zurück:
- y_predsndarray der Form (n_samples, n_estimators)
Vorhersageergebnisse für jeden Estimator.