RandomForestRegressor#
- class sklearn.ensemble.RandomForestRegressor(n_estimators=100, *, criterion='squared_error', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=1.0, max_leaf_nodes=None, min_impurity_decrease=0.0, bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False, ccp_alpha=0.0, max_samples=None, monotonic_cst=None)[Quelle]#
Ein Random-Forest-Regressor.
Ein Random Forest ist ein Meta-Schätzer, der eine Anzahl von Entscheidungsbaum-Regressoren auf verschiedenen Teilmengen des Datensatzes anpasst und Mittelwertbildung verwendet, um die Vorhersagegenauigkeit zu verbessern und Überanpassung zu kontrollieren. Bäume im Forest verwenden die Strategie der besten Aufteilung, d.h. äquivalent zur Übergabe von
splitter="best"an den zugrunde liegendenDecisionTreeRegressor. Die Größe der Teilmengen wird mit dem Parametermax_samplesgesteuert, wennbootstrap=True(Standard), andernfalls wird der gesamte Datensatz zum Aufbau jedes Baumes verwendet.Dieser Estimator unterstützt nativ fehlende Werte (NaNs). Während des Trainings lernt der Baumgenerator an jedem Splitpunkt, ob Samples mit fehlenden Werten basierend auf dem potenziellen Gewinn zum linken oder rechten Kind gehen sollen. Bei der Vorhersage werden Samples mit fehlenden Werten folgerichtig dem linken oder rechten Kind zugeordnet. Wenn während des Trainings keine fehlenden Werte für ein bestimmtes Merkmal angetroffen wurden, werden Samples mit fehlenden Werten dem Kind mit den meisten Samples zugeordnet.
Ein Vergleich zwischen baumbasierten Ensemble-Modellen finden Sie im Beispiel Vergleich von Random Forests und Histogramm-Gradienten-Boosting-Modellen.
Lesen Sie mehr im Benutzerhandbuch.
- Parameter:
- n_estimatorsint, Standard=100
Die Anzahl der Bäume im Forest.
Geändert in Version 0.22: Der Standardwert von
n_estimatorsänderte sich von 10 auf 100 in 0.22.- criterion{„squared_error“, „absolute_error“, „friedman_mse“, „poisson“}, Standard=„squared_error“
Die Funktion zur Messung der Qualität einer Teilung. Unterstützte Kriterien sind „squared_error“ für den mittleren quadratischen Fehler, der der Reduzierung der Varianz als Merkmalwahlkriterium entspricht und den L2-Verlust minimiert, indem der Mittelwert jeder Terminalknotens verwendet wird, „friedman_mse“, der den mittleren quadratischen Fehler mit dem Friedman-Verbesserungs-Score für potenzielle Teilungen verwendet, „absolute_error“ für den mittleren absoluten Fehler, der den L1-Verlust minimiert, indem der Median jeder Terminalknotens verwendet wird, und „poisson“, der die Reduzierung der Poisson-Devianz zur Suche nach Teilungen verwendet. Das Training mit „absolute_error“ ist deutlich langsamer als mit „squared_error“.
Hinzugefügt in Version 0.18: Kriterium für den mittleren absoluten Fehler (MAE).
Hinzugefügt in Version 1.0: Poisson-Kriterium.
- max_depthint, Standard=None
Die maximale Tiefe des Baumes. Wenn None, dann werden Knoten erweitert, bis alle Blätter rein sind oder bis alle Blätter weniger als min_samples_split Samples enthalten.
- min_samples_splitint oder float, Standard=2
Die minimale Anzahl von Samples, die zur Aufteilung eines internen Knotens erforderlich sind.
Wenn int, dann betrachte
min_samples_splitals die minimale Anzahl.Wenn float, dann ist
min_samples_splitein Bruchteil undceil(min_samples_split * n_samples)ist die minimale Anzahl von Samples für jeden Split.
Geändert in Version 0.18: Float-Werte für Brüche hinzugefügt.
- min_samples_leafint oder float, Standard=1
Die minimale Anzahl von Samples, die an einem Blattknoten erforderlich sind. Ein Splitpunkt in beliebiger Tiefe wird nur berücksichtigt, wenn er mindestens
min_samples_leafTrainingssamples in jedem der linken und rechten Zweige hinterlässt. Dies kann insbesondere bei der Regression zur Glättung des Modells beitragen.Wenn int, dann betrachte
min_samples_leafals die minimale Anzahl.Wenn float, dann ist
min_samples_leafein Bruchteil undceil(min_samples_leaf * n_samples)ist die minimale Anzahl von Samples für jeden Knoten.
Geändert in Version 0.18: Float-Werte für Brüche hinzugefügt.
- min_weight_fraction_leaffloat, Standard=0.0
Der minimale gewichtete Bruchteil der Summe aller Gewichte (aller Eingabesamplings), der in einem Blattknoten erforderlich ist. Samples haben gleiche Gewichte, wenn sample_weight nicht angegeben ist.
- max_features{„sqrt“, „log2“, None}, int oder float, Standard=1.0
Die Anzahl der Features, die bei der Suche nach dem besten Split berücksichtigt werden.
Wenn int, dann werden
max_featuresFeatures bei jedem Split berücksichtigt.Wenn float, dann ist
max_featuresein Bruchteil undmax(1, int(max_features * n_features_in_))Features werden bei jedem Split berücksichtigt.Wenn "sqrt", dann
max_features=sqrt(n_features).Wenn "log2", dann
max_features=log2(n_features).Wenn None oder 1.0, dann
max_features=n_features.
Hinweis
Der Standardwert von 1.0 entspricht Bagged Trees, und mehr Zufälligkeit kann durch niedrigere Werte erzielt werden, z. B. 0.3.
Geändert in Version 1.1: Der Standardwert von
max_featureswurde von"auto"auf 1.0 geändert.Hinweis: Die Suche nach einem Split stoppt nicht, bis mindestens eine gültige Partition der Knoten-Samples gefunden wurde, auch wenn dies die Inspektion von mehr als
max_featuresFeatures erfordert.- max_leaf_nodesint, Standard=None
Bäume mit
max_leaf_nodesim Best-First-Verfahren wachsen lassen. Beste Knoten werden als relative Verringerung der Unreinheit definiert. Wenn None, dann unbegrenzte Anzahl von Blattknoten.- min_impurity_decreasefloat, Standard=0.0
Ein Knoten wird geteilt, wenn dieser Split eine Verringerung der Unreinheit von mindestens diesem Wert bewirkt.
Die gewichtete Gleichung für die Verringerung der Unreinheit lautet:
N_t / N * (impurity - N_t_R / N_t * right_impurity - N_t_L / N_t * left_impurity)
wobei
Ndie Gesamtzahl der Samples,N_tdie Anzahl der Samples im aktuellen Knoten,N_t_Ldie Anzahl der Samples im linken Kind undN_t_Rdie Anzahl der Samples im rechten Kind ist.N,N_t,N_t_RundN_t_Lbeziehen sich alle auf die gewichtete Summe, wennsample_weightübergeben wird.Hinzugefügt in Version 0.19.
- bootstrapbool, default=True
Ob Bootstrap-Samples beim Aufbau von Bäumen verwendet werden. Wenn False, wird der gesamte Datensatz zum Aufbau jedes Baumes verwendet.
- oob_scorebool oder callable, Standard=False
Ob Out-of-Bag-Stichproben verwendet werden sollen, um den Generalisierungs-Score zu schätzen. Standardmäßig wird
r2_scoreverwendet. Stellen Sie eine aufrufbare Funktion mit der Signaturmetric(y_true, y_pred)bereit, um eine benutzerdefinierte Metrik zu verwenden. Nur verfügbar, wennbootstrap=True.Eine Illustration der Out-of-Bag (OOB)-Fehlerschätzung finden Sie im Beispiel OOB-Fehler für Random Forests.
- n_jobsint, default=None
Die Anzahl der parallel auszuführenden Jobs.
fit,predict,decision_pathundapplywerden alle über die Bäume parallelisiert.Nonebedeutet 1, es sei denn, Sie befinden sich in einemjoblib.parallel_backendKontext.-1bedeutet, alle Prozessoren zu verwenden. Weitere Details finden Sie im Glossar.- random_stateint, RandomState-Instanz oder None, default=None
Steuert sowohl die Zufälligkeit des Bootstrapping der für den Aufbau der Bäume verwendeten Stichproben (wenn
bootstrap=True) als auch die Stichprobenziehung der Merkmale, die bei der Suche nach der besten Teilung an jedem Knoten berücksichtigt werden (wennmax_features < n_features). Details finden Sie im Glossar.- verboseint, default=0
Steuert die Ausführlichkeit beim Anpassen und Vorhersagen.
- warm_startbool, Standard=False
Wenn auf
Truegesetzt, wird die Lösung des vorherigen Aufrufs von fit wiederverwendet und dem Ensemble weitere Estimators hinzugefügt, andernfalls wird nur ein komplett neues Forest erstellt. Siehe Glossar und Zusätzliche Bäume anpassen für Details.- ccp_alphanicht-negativer float, Standard=0.0
Komplexitätsparameter, der für das prudenbasierte "Minimal Cost-Complexity Pruning" verwendet wird. Es wird der Teilbaum mit der größten Kostenkomplexität gewählt, der kleiner als
ccp_alphaist. Standardmäßig erfolgt kein Pruning. Siehe Pruning nach Kostenkomplexität für Details. Siehe Entscheidungsbäume durch Kostenkomplexitäts-Pruning nachbearbeiten für ein Beispiel eines solchen Prunings.Hinzugefügt in Version 0.22.
- max_samplesint oder float, Standard=None
Wenn bootstrap True ist, die Anzahl der Samples, die aus X gezogen werden, um jeden Basis-Estimator zu trainieren.
Wenn None (Standard), dann werden
X.shape[0]Samples gezogen.Wenn int, dann werden
max_samplesSamples gezogen.Wenn float, werden
max(round(n_samples * max_samples), 1)Stichproben gezogen. Daher solltemax_samplesim Intervall(0.0, 1.0]liegen.
Hinzugefügt in Version 0.22.
- monotonic_cstarray-like von int der Form (n_features,), Standard=None
- Gibt die zu erzwingende Monotonie-Beschränkung für jedes Merkmal an.
1: monoton steigend
0: keine Beschränkung
-1: monoton fallend
Wenn monotonic_cst None ist, werden keine Beschränkungen angewendet.
- Monotonie-Beschränkungen werden nicht unterstützt für
Multi-Output-Regressionen (d.h. wenn
n_outputs_ > 1),Regressionen, die auf Daten mit fehlenden Werten trainiert wurden.
Lesen Sie mehr im Benutzerhandbuch.
Hinzugefügt in Version 1.4.
- Attribute:
- estimator_
DecisionTreeRegressor Die Kind-Estimator-Vorlage, die zum Erstellen der Sammlung von angepassten Unter-Estimators verwendet wird.
Hinzugefügt in Version 1.2:
base_estimator_wurde inestimator_umbenannt.- estimators_list von DecisionTreeRegressor
Die Sammlung der angepassten Unter-Estimators.
feature_importances_ndarray der Form (n_features,)Die Unreinheits-basierten Wichtigkeiten der Features.
- n_features_in_int
Anzahl der während des fits gesehenen Merkmale.
Hinzugefügt in Version 0.24.
- feature_names_in_ndarray mit Form (
n_features_in_,) Namen der während fit gesehenen Merkmale. Nur definiert, wenn
XMerkmalnamen hat, die alle Zeichenketten sind.Hinzugefügt in Version 1.0.
- n_outputs_int
Die Anzahl der Ausgaben, wenn
fitausgeführt wird.- oob_score_float
Score des Trainingsdatensatzes, der mit einer Out-of-Bag-Schätzung erzielt wurde. Dieses Attribut existiert nur, wenn
oob_scoreTrue ist.- oob_prediction_ndarray der Form (n_samples,) oder (n_samples, n_outputs)
Vorhersage, berechnet mit der Out-of-Bag-Schätzung auf dem Trainingsdatensatz. Dieses Attribut existiert nur, wenn
oob_scoreTrue ist.estimators_samples_Liste von ArraysDie Teilmenge der gezogenen Samples für jeden Basis-Estimator.
- estimator_
Siehe auch
sklearn.tree.DecisionTreeRegressorEin Entscheidungsbaum-Regressor.
sklearn.ensemble.ExtraTreesRegressorEnsemble von extrem zufälligen Baum-Regressoren.
sklearn.ensemble.HistGradientBoostingRegressorEin Histogramm-basierter Gradient Boosting Regression Tree, sehr schnell für große Datensätze (n_samples >= 10_000).
Anmerkungen
Die Standardwerte für die Parameter, die die Größe der Bäume steuern (z. B.
max_depth,min_samples_leafusw.), führen zu vollständig gewachsenen und un-geprunten Bäumen, die auf einigen Datensätzen potenziell sehr groß sein können. Um den Speicherverbrauch zu reduzieren, sollte die Komplexität und Größe der Bäume durch Setzen dieser Parameterwerte gesteuert werden.Die Merkmale werden bei jeder Teilung immer zufällig permutiert. Daher kann die gefundene beste Teilung variieren, selbst bei denselben Trainingsdaten,
max_features=n_featuresundbootstrap=False, wenn die Verbesserung des Kriteriums für mehrere während der Suche nach der besten Teilung aufgeführte Teilungen identisch ist. Um ein deterministisches Verhalten während des Trainings zu erzielen, mussrandom_statefestgelegt werden.Der Standardwert
max_features=1.0verwendetn_featuresanstelle vonn_features / 3. Letzteres wurde ursprünglich in [1] vorgeschlagen, während ersteres in [2] neuerdings empirisch begründet wurde.Referenzen
[2]P. Geurts, D. Ernst. und L. Wehenkel, „Extremely randomized trees“, Machine Learning, 63(1), 3-42, 2006.
Beispiele
>>> from sklearn.ensemble import RandomForestRegressor >>> from sklearn.datasets import make_regression >>> X, y = make_regression(n_features=4, n_informative=2, ... random_state=0, shuffle=False) >>> regr = RandomForestRegressor(max_depth=2, random_state=0) >>> regr.fit(X, y) RandomForestRegressor(...) >>> print(regr.predict([[0, 0, 0, 0]])) [-8.32987858]
- apply(X)[Quelle]#
Wendet die Bäume im Forest auf X an, gibt Blattindizes zurück.
- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features)
Die Eingabesamplings. Intern wird der dtype zu
dtype=np.float32konvertiert. Wenn eine dünn besetzte Matrix bereitgestellt wird, wird sie in eine dünn besetztecsr_matrixkonvertiert.
- Gibt zurück:
- X_leavesndarray der Form (n_samples, n_estimators)
Gibt für jeden Datenpunkt x in X und für jeden Baum im Forest den Index des Blattes zurück, in das x gelangt.
- decision_path(X)[Quelle]#
Gibt den Entscheidungsbaum im Forest zurück.
Hinzugefügt in Version 0.18.
- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features)
Die Eingabesamplings. Intern wird der dtype zu
dtype=np.float32konvertiert. Wenn eine dünn besetzte Matrix bereitgestellt wird, wird sie in eine dünn besetztecsr_matrixkonvertiert.
- Gibt zurück:
- indicatordünn besetzte Matrix der Form (n_samples, n_nodes)
Gibt eine Knotenindikatormatrix zurück, bei der Nicht-Null-Elemente darauf hinweisen, dass die Samples die Knoten durchlaufen. Die Matrix ist im CSR-Format.
- n_nodes_ptrndarray der Form (n_estimators + 1,)
Die Spalten von indicator[n_nodes_ptr[i]:n_nodes_ptr[i+1]] geben den Indikatorwert für den i-ten Estimator an.
- fit(X, y, sample_weight=None)[Quelle]#
Baut einen Forest von Bäumen aus dem Trainingsset (X, y) auf.
- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features)
Die Trainings-Eingabesamplings. Intern wird der dtype zu
dtype=np.float32konvertiert. Wenn eine dünn besetzte Matrix bereitgestellt wird, wird sie in eine dünn besetztecsc_matrixkonvertiert.- yarray-like der Form (n_samples,) oder (n_samples, n_outputs)
Die Zielwerte (Klassenbezeichnungen bei Klassifizierung, reelle Zahlen bei Regression).
- sample_weightarray-like der Form (n_samples,), Standardwert=None
Sample-Gewichte. Wenn None, dann werden die Samples gleich gewichtet. Splits, die Kindknoten mit Nettogewicht Null oder negativ erzeugen würden, werden bei der Suche nach einem Split in jedem Knoten ignoriert. Im Falle einer Klassifizierung werden Splits auch ignoriert, wenn sie dazu führen würden, dass eine einzelne Klasse in einem Kindknoten ein negatives Gewicht trägt.
- Gibt zurück:
- selfobject
Angepasster Schätzer.
- get_metadata_routing()[Quelle]#
Holt das Metadaten-Routing dieses Objekts.
Bitte prüfen Sie im Benutzerhandbuch, wie der Routing-Mechanismus funktioniert.
- Gibt zurück:
- routingMetadataRequest
Ein
MetadataRequest, der Routing-Informationen kapselt.
- get_params(deep=True)[Quelle]#
Holt Parameter für diesen Schätzer.
- Parameter:
- deepbool, default=True
Wenn True, werden die Parameter für diesen Schätzer und die enthaltenen Unterobjekte, die Schätzer sind, zurückgegeben.
- Gibt zurück:
- paramsdict
Parameternamen, zugeordnet ihren Werten.
- predict(X)[Quelle]#
Prognostiziert das Regressionsziel für X.
Die vorhergesagte Regressionszielgröße einer Eingabestichprobe wird als der mittlere vorhergesagte Regressionszielwert der Bäume im Forest berechnet.
- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features)
Die Eingabesamplings. Intern wird der dtype zu
dtype=np.float32konvertiert. Wenn eine dünn besetzte Matrix bereitgestellt wird, wird sie in eine dünn besetztecsr_matrixkonvertiert.
- Gibt zurück:
- yndarray der Form (n_samples,) oder (n_samples, n_outputs)
Die vorhergesagten Werte.
- 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(). Der bestmögliche Score ist 1.0 und 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 einen \(R^2\)-Score 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
Der \(R^2\)-Score, der beim Aufruf von
scorefür einen Regressor verwendet wird, nutztmultioutput='uniform_average'ab Version 0.23, um mit dem Standardwert vonr2_scorekonsistent zu sein. Dies beeinflusst diescore-Methode aller Multi-Output-Regressoren (außerMultiOutputRegressor).
- set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') RandomForestRegressor[Quelle]#
Konfiguriert, ob Metadaten für die
fit-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, anfitübergeben. Die Anforderung wird ignoriert, wenn keine Metadaten vorhanden sind.False: Metadaten werden nicht angefordert und der Meta-Schätzer übergibt sie nicht anfit.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_weightinfit.
- Gibt zurück:
- selfobject
Das aktualisierte Objekt.
- set_params(**params)[Quelle]#
Setzt die Parameter dieses Schätzers.
Die Methode funktioniert sowohl bei einfachen Schätzern als auch bei verschachtelten Objekten (wie
Pipeline). Letztere haben Parameter der Form<component>__<parameter>, so dass es möglich ist, jede Komponente eines verschachtelten Objekts zu aktualisieren.- Parameter:
- **paramsdict
Schätzer-Parameter.
- Gibt zurück:
- selfestimator instance
Schätzer-Instanz.
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') RandomForestRegressor[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.
Galeriebeispiele#
Vergleich von Random Forests und Histogram Gradient Boosting Modellen
Vergleich von Random Forests und dem Multi-Output Meta-Estimator
Vorhersagen von einzelnen und abstimmenden Regressionsmodellen plotten
Fehlende Werte mit Varianten von IterativeImputer imputieren
Fehlende Werte imputieren, bevor ein Schätzer erstellt wird