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. alpha muss 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 das LinearRegression-Objekt. Aus numerischen Gründen wird die Verwendung von alpha = 0 mit dem Ridge-Objekt nicht empfohlen. Verwenden Sie stattdessen das LinearRegression-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 tol und max_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, wenn positive True 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_intercept True 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 tol fü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 True gesetzt, 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_iter zurü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_iter True ist.

interceptfloat oder ndarray der Form (n_targets,)

Der Achsenabschnitt des Modells. Nur zurückgegeben, wenn return_intercept True 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 wie LogisticRegression oder LinearSVC. 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)