ridge_regression#
- sklearn.linear_model.ridge_regression(X, y, alpha, *, sample_weight=None, solver='auto', max_iter=None, tol=0.0001, verbose=0, positive=False, random_state=None, return_n_iter=False, return_intercept=False, check_input=True)[Quelle]#
Löst die Ridge-Gleichung nach der Methode der Normalgleichungen.
Lesen Sie mehr im Benutzerhandbuch.
- Parameter:
- X{array-like, sparse matrix, LinearOperator} der Form (n_samples, n_features)
Trainingsdaten.
- yarray-like der Form (n_samples,) oder (n_samples, n_targets)
Zielwerte.
- alphafloat oder array-like der Form (n_targets,)
Konstante, die den L2-Term multipliziert und die Stärke der Regularisierung steuert.
alphamuss eine nicht-negative Gleitkommazahl sein, d. h. im Bereich[0, inf).Wenn
alpha = 0, ist das Ziel äquivalent zu den gewöhnlichen kleinsten Quadraten, gelöst durch dasLinearRegression-Objekt. Aus numerischen Gründen wird die Verwendung vonalpha = 0mit demRidge-Objekt nicht empfohlen. Verwenden Sie stattdessen dasLinearRegression-Objekt.Wenn ein Array übergeben wird, wird angenommen, dass die Strafen spezifisch für die Zielvariablen sind. Daher müssen sie in der Anzahl übereinstimmen.
- sample_weightfloat oder array-ähnlich der Form (n_samples,), Standard=None
Individuelle Gewichte für jede Stichprobe. Wenn ein Float angegeben wird, hat jede Stichprobe das gleiche Gewicht. Wenn sample_weight nicht None und solver='auto' ist, wird der Solver auf 'cholesky' gesetzt.
Hinzugefügt in Version 0.17.
- solver{‘auto’, ‘svd’, ‘cholesky’, ‘lsqr’, ‘sparse_cg’, ‘sag’, ‘saga’, ‘lbfgs’}, default=’auto’
Löser, der in den rechnerischen Routinen verwendet werden soll
‚auto‘ wählt den Löser automatisch basierend auf dem Datentyp aus.
‚svd‘ verwendet eine Singulärwertzerlegung (Singular Value Decomposition, SVD) von X zur Berechnung der Ridge-Koeffizienten. Dies ist der stabilste Löser, insbesondere stabiler für singuläre Matrizen als ‚cholesky‘, aber auf Kosten einer langsameren Ausführung.
‘cholesky’ verwendet die Standardfunktion scipy.linalg.solve, um eine geschlossene Lösungsform durch eine Cholesky-Zerlegung von dot(X.T, X) zu erhalten.
‘sparse_cg’ verwendet den konjugierten Gradientenlöser, wie er in scipy.sparse.linalg.cg zu finden ist. Als iterativer Algorithmus ist dieser Löser für große Datenmengen besser geeignet als ‘cholesky’ (Möglichkeit zur Einstellung von
tolundmax_iter).‘lsqr’ verwendet die spezielle Routine für regularisierte kleinste Quadrate scipy.sparse.linalg.lsqr. Sie ist die schnellste und verwendet ein iteratives Verfahren.
‘sag’ verwendet einen stochastischen durchschnittlichen Gradientenabstieg (Stochastic Average Gradient descent), und ‘saga’ verwendet seine verbesserte, unverzerrte Version namens SAGA. Beide Methoden verwenden ebenfalls ein iteratives Verfahren und sind oft schneller als andere Löser, wenn sowohl n_samples als auch n_features groß sind. Beachten Sie, dass die schnelle Konvergenz von ‘sag’ und ‘saga’ nur für Merkmale mit ungefähr der gleichen Skala garantiert ist. Sie können die Daten mit einem Skalierer aus sklearn.preprocessing vorverarbeiten.
‘lbfgs’ verwendet den L-BFGS-B-Algorithmus, implementiert in
scipy.optimize.minimize. Er kann nur verwendet werden, wennpositiveTrue ist.
Alle Löser außer ‘svd’ unterstützen sowohl dichte als auch spärliche Daten. Nur ‘lsqr’, ‘sag’, ‘sparse_cg’ und ‘lbfgs’ unterstützen jedoch spärliche Eingaben, wenn
fit_interceptTrue ist.Hinzugefügt in Version 0.17: Stochastic Average Gradient Descent Löser.
Hinzugefügt in Version 0.19: SAGA-Löser.
- max_iterint, Standard=None
Maximale Anzahl von Iterationen für den konjugierten Gradientenlöser. Für die Löser ‘sparse_cg’ und ‘lsqr’ wird der Standardwert von scipy.sparse.linalg bestimmt. Für die Löser ‘sag’ und saga beträgt der Standardwert 1000. Für den Löser ‘lbfgs’ beträgt der Standardwert 15000.
- tolfloat, Standard=1e-4
Genauigkeit der Lösung. Beachten Sie, dass
tolfür die Löser ‘svd’ und ‘cholesky’ keine Auswirkung hat.Geändert in Version 1.2: Standardwert von 1e-3 auf 1e-4 geändert, um mit anderen linearen Modellen übereinzustimmen.
- verboseint, default=0
Verbosity-Level. Wenn verbose > 0 gesetzt ist, werden zusätzliche Informationen angezeigt, abhängig vom verwendeten Löser.
- positivebool, Standardwert=False
Wenn auf
Truegesetzt, werden die Koeffizienten gezwungen, positiv zu sein. In diesem Fall wird nur der ‚lbfgs‘-Löser unterstützt.- random_stateint, RandomState instance, default=None
Verwendet, wenn
solver== ‚sag‘ oder ‚saga‘ ist, um die Daten zu mischen. Siehe Glossar für Details.- return_n_iterbool, Standard=False
Wenn True, gibt die Methode auch
n_iterzurück, die tatsächliche Anzahl der vom Löser durchgeführten Iterationen.Hinzugefügt in Version 0.17.
- return_interceptbool, Standardwert=False
Wenn True und X spärlich ist, gibt die Methode auch den Achsenabschnitt zurück und der Löser wird automatisch auf 'sag' geändert. Dies ist nur eine temporäre Lösung zur Anpassung des Achsenabschnitts bei spärlichen Daten. Für dichte Daten verwenden Sie sklearn.linear_model._preprocess_data vor Ihrer Regression.
Hinzugefügt in Version 0.17.
- check_inputbool, Standardwert=True
Wenn False, werden die Eingabearrays X und y nicht überprüft.
Hinzugefügt in Version 0.21.
- Gibt zurück:
- coefndarray der Form (n_features,) oder (n_targets, n_features)
Gewichtsvektor(en).
- n_iterint, optional
Die tatsächliche Anzahl der vom Löser durchgeführten Iterationen. Nur zurückgegeben, wenn
return_n_iterTrue ist.- interceptfloat oder ndarray der Form (n_targets,)
Der Achsenabschnitt des Modells. Nur zurückgegeben, wenn
return_interceptTrue ist und X ein spärliches scipy-Array ist.
Anmerkungen
Diese Funktion berechnet den Achsenabschnitt nicht.
Die Regularisierung verbessert die Konditionierung des Problems und reduziert die Varianz der Schätzungen. Größere Werte geben eine stärkere Regularisierung an. Alpha entspricht
1 / (2C)bei anderen linearen Modellen wieLogisticRegressionoderLinearSVC. Wenn ein Array übergeben wird, werden die Strafen als spezifisch für die Zielvariablen angenommen. Daher müssen sie in der Anzahl übereinstimmen.Beispiele
>>> import numpy as np >>> from sklearn.datasets import make_regression >>> from sklearn.linear_model import ridge_regression >>> rng = np.random.RandomState(0) >>> X = rng.randn(100, 4) >>> y = 2.0 * X[:, 0] - 1.0 * X[:, 1] + 0.1 * rng.standard_normal(100) >>> coef, intercept = ridge_regression(X, y, alpha=1.0, return_intercept=True, ... random_state=0) >>> coef array([ 1.97, -1., -2.69e-3, -9.27e-4 ]) >>> intercept np.float64(-.0012)