HuberRegressor#
- class sklearn.linear_model.HuberRegressor(*, epsilon=1.35, max_iter=100, alpha=0.0001, warm_start=False, fit_intercept=True, tol=1e-05)[Quelle]#
L2-regularisiertes lineares Regressionsmodell, das robust gegenüber Ausreißern ist.
Der Huber Regressor optimiert den quadratischen Verlust für die Samples, bei denen
|(y - Xw - c) / sigma| < epsilonist, und den absoluten Verlust für die Samples, bei denen|(y - Xw - c) / sigma| > epsilonist, wobei die Modellkoeffizientenw, der Achsenabschnittcund die SkalierungsigmaParameter sind, die optimiert werden sollen. Der Parametersigmastellt sicher, dass, wennymit einem bestimmten Faktor skaliert wird,epsilonnicht neu skaliert werden muss, um die gleiche Robustheit zu erzielen. Beachten Sie, dass dies nicht berücksichtigt, dass die verschiedenen Merkmale vonXunterschiedliche Skalierungen aufweisen können.Die Huber-Verlustfunktion hat den Vorteil, dass sie nicht stark von Ausreißern beeinflusst wird, aber deren Wirkung nicht vollständig ignoriert.
Lesen Sie mehr im Benutzerhandbuch
Hinzugefügt in Version 0.18.
- Parameter:
- epsilonfloat, Standardwert=1.35
Der Parameter epsilon steuert die Anzahl der Samples, die als Ausreißer klassifiziert werden sollen. Je kleiner epsilon ist, desto robuster ist er gegenüber Ausreißern. Epsilon muss im Bereich
[1, inf)liegen.- max_iterint, default=100
Maximale Anzahl von Iterationen, die
scipy.optimize.minimize(method="L-BFGS-B")ausführen soll.- alphafloat, default=0.0001
Stärke der quadratischen L2-Regularisierung. Beachten Sie, dass die Strafe gleich
alpha * ||w||^2ist. Muss im Bereich[0, inf)liegen.- warm_startbool, Standard=False
Dies ist nützlich, wenn die gespeicherten Attribute eines zuvor verwendeten Modells wiederverwendet werden müssen. Wenn auf False gesetzt, werden die Koeffizienten für jeden Aufruf von fit neu geschrieben. Siehe das Glossar.
- fit_interceptbool, Standardwert=True
Ob der Achsenabschnitt angepasst werden soll oder nicht. Dies kann auf False gesetzt werden, wenn die Daten bereits um den Ursprung zentriert sind.
- tolfloat, Standardwert=1e-05
Die Iteration wird gestoppt, wenn
max{|proj g_i | i = 1, ..., n}<=tolist, wobei pg_i die i-te Komponente des projizierten Gradienten ist.
- Attribute:
- coef_array, Form (n_features,)
Merkmale, die durch Optimierung des L2-regularisierten Huber-Verlusts erzielt wurden.
- intercept_float
Achsenabschnitt.
- scale_float
Der Wert, um den
|y - Xw - c|herunterskaliert wird.- 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_iter_int
Anzahl der Iterationen, die
scipy.optimize.minimize(method="L-BFGS-B")ausgeführt hat.Geändert in Version 0.20: In SciPy <= 1.0.0 kann die Anzahl der lbfgs-Iterationen
max_iterüberschreiten.n_iter_wird nun höchstensmax_itermelden.- outliers_array, Form (n_samples,)
Eine boolesche Maske, die auf True gesetzt wird, wenn die Samples als Ausreißer identifiziert werden.
Siehe auch
RANSACRegressorRANSAC (RANdom SAmple Consensus) Algorithmus.
TheilSenRegressorRobuster multivariater Regressionsestimator nach Theil-Sen.
SGDRegressorAngepasst durch Minimierung eines regulierten empirischen Verlusts mit SGD.
Referenzen
[1]Peter J. Huber, Elvezio M. Ronchetti, Robust Statistics Concomitant scale estimates, S. 172
[2]Art B. Owen (2006), A robust hybrid of lasso and ridge regression.
Beispiele
>>> import numpy as np >>> from sklearn.linear_model import HuberRegressor, LinearRegression >>> from sklearn.datasets import make_regression >>> rng = np.random.RandomState(0) >>> X, y, coef = make_regression( ... n_samples=200, n_features=2, noise=4.0, coef=True, random_state=0) >>> X[:4] = rng.uniform(10, 20, (4, 2)) >>> y[:4] = rng.uniform(10, 20, 4) >>> huber = HuberRegressor().fit(X, y) >>> huber.score(X, y) -7.284 >>> huber.predict(X[:1,]) array([806.7200]) >>> linear = LinearRegression().fit(X, y) >>> print("True coefficients:", coef) True coefficients: [20.4923... 34.1698...] >>> print("Huber coefficients:", huber.coef_) Huber coefficients: [17.7906... 31.0106...] >>> print("Linear Regression coefficients:", linear.coef_) Linear Regression coefficients: [-1.9221... 7.0226...]
- fit(X, y, sample_weight=None)[Quelle]#
Trainiert das Modell anhand der gegebenen Trainingsdaten.
- Parameter:
- Xarray-ähnlich, Form (n_samples, n_features)
Trainingsvektor, wobei
n_samplesdie Anzahl der Stichproben undn_featuresdie Anzahl der Merkmale ist.- yarray-like, Form (n_samples,)
Zielvektor relativ zu X.
- sample_weightarray-like, Form (n_samples,)
Gewicht, das jedem Sample zugewiesen wird.
- Gibt zurück:
- selfobject
Angepasster
HuberRegressorSchä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]#
Vorhersage mit dem linearen Modell.
- Parameter:
- Xarray-like oder sparse matrix, Form (n_samples, n_features)
Stichproben.
- Gibt zurück:
- Carray, Form (n_samples,)
Gibt vorhergesagte Werte zurück.
- 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 gesamten Quadrate ist((y_true - y_true.mean()) ** 2).sum(). Der bestmögliche Wert ist 1,0 und er 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\)-Wert 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\)-Wert, der beim Aufruf von
scoreauf einem Regressor verwendet wird, nutztmultioutput='uniform_average'ab Version 0.23, um konsistent mit dem Standardwert vonr2_scorezu sein. Dies beeinflusst diescore-Methode aller Multioutput-Regressoren (mit Ausnahme vonMultiOutputRegressor).
- set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') HuberRegressor[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$') HuberRegressor[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#
HuberRegressor vs Ridge auf Datensatz mit starken Ausreißern
Ridge-Koeffizienten als Funktion der L2-Regularisierung