Lasso#

class sklearn.linear_model.Lasso(alpha=1.0, *, fit_intercept=True, precompute=False, copy_X=True, max_iter=1000, tol=0.0001, warm_start=False, positive=False, random_state=None, selection='cyclic')[Quelle]#

Lineares Modell, trainiert mit L1-Prior als Regularisator (auch bekannt als Lasso).

Die Optimierungsziel für Lasso ist

(1 / (2 * n_samples)) * ||y - Xw||^2_2 + alpha * ||w||_1

Technisch gesehen optimiert das Lasso-Modell die gleiche Zielfunktion wie das Elastic Net mit l1_ratio=1.0 (keine L2-Strafe).

Lesen Sie mehr im Benutzerhandbuch.

Parameter:
alphafloat, default=1.0

Konstante, die den L1-Term multipliziert und die Stärke der Regularisierung steuert. alpha muss eine nicht-negative Gleitkommazahl sein, d. h. im Bereich von [0, inf).

Wenn alpha = 0, ist das Ziel äquivalent zu den gewöhnlichen kleinsten Quadraten, gelöst durch das Objekt LinearRegression. Aus numerischen Gründen wird die Verwendung von alpha = 0 mit dem Objekt Lasso nicht empfohlen. Stattdessen sollten Sie das Objekt LinearRegression verwenden.

fit_interceptbool, Standardwert=True

Ob für dieses Modell der Achsenabschnitt berechnet werden soll. Wenn auf False gesetzt, wird kein Achsenabschnitt in den Berechnungen verwendet (d. h. die Daten werden als zentriert erwartet).

precomputebool oder array-ähnlich der Form (n_features, n_features), Standard=False

Ob eine vorab berechnete Gram-Matrix verwendet werden soll, um die Berechnungen zu beschleunigen. Die Gram-Matrix kann auch als Argument übergeben werden. Bei spärlichen Eingaben ist diese Option immer False, um die Spärlichkeit zu erhalten.

copy_Xbool, Standardwert=True

Wenn True, wird X kopiert; andernfalls kann es überschrieben werden.

max_iterint, default=1000

Die maximale Anzahl von Iterationen.

tolfloat, Standard=1e-4

Die Toleranz für die Optimierung: Wenn die Aktualisierungen kleiner oder gleich tol sind, prüft der Optimierungscode die duale Lücke auf Optimalität und fährt fort, bis sie kleiner oder gleich tol ist, siehe Hinweise unten.

warm_startbool, Standard=False

Wenn auf True gesetzt, wird die Lösung des vorherigen Aufrufs von fit als Initialisierung wiederverwendet, andernfalls wird die vorherige Lösung einfach gelöscht. Siehe das Glossar.

positivebool, Standardwert=False

Wenn auf True gesetzt, werden die Koeffizienten erzwungen, positiv zu sein.

random_stateint, RandomState instance, default=None

Der Seed des Pseudo-Zufallszahlengenerators, der ein zufälliges Merkmal zur Aktualisierung auswählt. Wird verwendet, wenn selection == ‘random‘ ist. Übergeben Sie eine Ganzzahl für reproduzierbare Ausgaben über mehrere Funktionsaufrufe hinweg. Siehe Glossar.

selection{‘cyclic’, ‘random’}, Standardwert=’cyclic’

Wenn auf ‘random‘ gesetzt, wird ein zufälliger Koeffizient in jeder Iteration aktualisiert, anstatt standardmäßig sequenziell durch die Merkmale zu iterieren. Dies (Setzen auf ‘random‘) führt oft zu einer signifikant schnelleren Konvergenz, insbesondere wenn tol höher als 1e-4 ist.

Attribute:
coef_ndarray der Form (n_features,) oder (n_targets, n_features)

Parametervektor (w in der Kostenfunktionsformel).

dual_gap_float oder ndarray der Form (n_targets,)

Gegebener Parameter alpha, die dualen Lücken am Ende der Optimierung, selbe Form wie jede Beobachtung von y.

sparse_coef_spärliche Matrix der Form (n_features, 1) oder (n_targets, n_features)

Spärliche Darstellung des gefitteten coef_.

intercept_float oder ndarray der Form (n_targets,)

Unabhängiger Term in der Entscheidungsfunktion.

n_iter_int oder Liste von int

Anzahl der Iterationen, die vom Koordinatensenkungs-Solver ausgeführt werden, um die angegebene Toleranz zu erreichen.

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 X Merkmalnamen hat, die alle Zeichenketten sind.

Hinzugefügt in Version 1.0.

Siehe auch

lars_path

Regularisierungspfad mit LARS.

lasso_path

Regularisierungspfad mit Lasso.

LassoLars

Lasso-Pfad entlang des Regularisierungsparameters mit dem LARS-Algorithmus.

LassoCV

Lasso alpha-Parameter per Kreuzvalidierung.

LassoLarsCV

Lasso least angle parameter algorithm per Kreuzvalidierung.

sklearn.decomposition.sparse_encode

Schätzer für spärliche Kodierungsarrays.

Anmerkungen

Der Algorithmus, der zur Anpassung des Modells verwendet wird, ist Koordinatenabstieg.

Um unnötige Speicherduplizierung zu vermeiden, sollte das X-Argument der fit-Methode direkt als Fortran-kontinuierlicher numpy-Array übergeben werden.

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) in anderen linearen Modellen wie LogisticRegression oder LinearSVC.

Die genauen Stoppkriterien basierend auf tol sind wie folgt: Zuerst wird geprüft, ob die maximale Koordinatenaktualisierung, d.h. \(\max_j |w_j^{new} - w_j^{old}|\) kleiner oder gleich tol mal dem maximalen absoluten Koeffizienten, \(\max_j |w_j|\) ist. Wenn ja, wird zusätzlich geprüft, ob die duale Lücke kleiner oder gleich tol mal \(||y||_2^2 / n_{\text{samples}}\) ist.

Das Ziel kann ein 2-dimensionales Array sein, was zur Optimierung der folgenden Zielfunktion führt

(1 / (2 * n_samples)) * ||Y - XW||^2_F + alpha * ||W||_11

wobei \(||W||_{1,1}\) die Summe der Beträge der Matrixkoeffizienten ist. Sie darf nicht mit MultiTaskLasso verwechselt werden, welche stattdessen die \(L_{2,1}\)-Norm der Koeffizienten bestraft, was zu zeilenweiser Spärlichkeit in den Koeffizienten führt.

Der zugrunde liegende Koordinatenabstiegslöser verwendet "gap-safe screening rules", um die Anpassungszeit zu beschleunigen, siehe Benutzerhandbuch zum Koordinatenabstieg.

Beispiele

>>> from sklearn import linear_model
>>> clf = linear_model.Lasso(alpha=0.1)
>>> clf.fit([[0,0], [1, 1], [2, 2]], [0, 1, 2])
Lasso(alpha=0.1)
>>> print(clf.coef_)
[0.85 0.  ]
>>> print(clf.intercept_)
0.15
  • L1-basierte Modelle für spärliche Signale vergleicht Lasso mit anderen L1-basierten Regressionsmodellen (ElasticNet und ARD Regression) für die Wiederherstellung spärlicher Signale in Gegenwart von Rauschen und Merkmalskorrelation.

fit(X, y, sample_weight=None, check_input=True)[Quelle]#

Fit-Modell mit Koordinatensenkung.

Parameter:
X{ndarray, spärliche Matrix, spärliches Array} von (n_samples, n_features)

Daten.

Beachten Sie, dass große spärliche Matrizen und Arrays, die int64-Indizes erfordern, nicht akzeptiert werden.

yndarray der Form (n_samples,) oder (n_samples, n_targets)

Ziel. Wird bei Bedarf an den Dtyp von X angepasst.

sample_weightfloat oder array-ähnlich der Form (n_samples,), Standard=None

Stichprobengewichte. Intern wird der sample_weight-Vektor so skaliert, dass er die Summe n_samples ergibt.

Hinzugefügt in Version 0.23.

check_inputbool, Standardwert=True

Erlaubt das Umgehen mehrerer Eingabeprüfungen. Verwenden Sie diesen Parameter nicht, es sei denn, Sie wissen, was Sie tun.

Gibt zurück:
selfobject

Angepasster Schätzer.

Anmerkungen

Koordinatensenkung ist ein Algorithmus, der Spalten von Daten einzeln betrachtet, daher konvertiert er die X-Eingabe bei Bedarf automatisch in ein Fortran-kontinuierliches numpy-Array.

Um Speicherneuzuweisungen zu vermeiden, ist es ratsam, die Anfangsdaten bereits in diesem Format im Speicher zu allozieren.

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.

static path(X, y, *, l1_ratio=0.5, eps=0.001, n_alphas=100, alphas=None, precompute='auto', Xy=None, copy_X=True, coef_init=None, verbose=False, return_n_iter=False, positive=False, check_input=True, **params)[Quelle]#

Berechnet den Elastic Net-Pfad mit Koordinatenabstieg.

Die Elastic-Net-Optimierungsfunktion variiert für Mono- und Multi-Ausgaben.

Für Mono-Ausgaben-Aufgaben ist es

1 / (2 * n_samples) * ||y - Xw||^2_2
+ alpha * l1_ratio * ||w||_1
+ 0.5 * alpha * (1 - l1_ratio) * ||w||^2_2

Für Multi-Ausgaben-Aufgaben ist es

(1 / (2 * n_samples)) * ||Y - XW||_Fro^2
+ alpha * l1_ratio * ||W||_21
+ 0.5 * alpha * (1 - l1_ratio) * ||W||_Fro^2

Wo

||W||_21 = \sum_i \sqrt{\sum_j w_{ij}^2}

d.h. die Summe der Norm jeder Zeile.

Lesen Sie mehr im Benutzerhandbuch.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Trainingsdaten. Direkt als Fortran-kontinuierliche Daten übergeben, um unnötige Speicherduplizierung zu vermeiden. Wenn y eine Mono-Ausgabe ist, kann X spärlich sein.

y{array-ähnlich, spärsitätsmatrix} der Form (n_samples,) oder (n_samples, n_targets)

Zielwerte.

l1_ratiofloat, Standardwert=0.5

Zahl zwischen 0 und 1, die an Elastic Net übergeben wird (Skalierung zwischen l1- und l2-Strafen). l1_ratio=1 entspricht dem Lasso.

epsfloat, Standardwert=1e-3

Länge des Pfades. eps=1e-3 bedeutet, dass alpha_min / alpha_max = 1e-3.

n_alphasint, Standardwert=100

Anzahl der Alphas entlang des Regularisierungspfades.

alphasarray-ähnlich, Standardwert=None

Liste von Alphas, für die die Modelle berechnet werden. Wenn None, werden Alphas automatisch gesetzt.

precompute‘auto‘, bool oder array-ähnlich der Form (n_features, n_features), Standardwert=’auto’

Ob eine vorberechnete Gram-Matrix verwendet werden soll, um Berechnungen zu beschleunigen. Wenn auf 'auto' gesetzt, entscheiden wir. Die Gram-Matrix kann auch als Argument übergeben werden.

Xyarray-ähnlich der Form (n_features,) oder (n_features, n_targets), Standardwert=None

Xy = np.dot(X.T, y), was vorab berechnet werden kann. Dies ist nur nützlich, wenn die Gram-Matrix vorab berechnet wurde.

copy_Xbool, Standardwert=True

Wenn True, wird X kopiert; andernfalls kann es überschrieben werden.

coef_initarray-ähnlich der Form (n_features,), Standardwert=None

Die Anfangswerte der Koeffizienten.

verbosebool oder int, default=False

Ausmaß der Ausführlichkeit.

return_n_iterbool, Standard=False

Ob die Anzahl der Iterationen zurückgegeben werden soll oder nicht.

positivebool, Standardwert=False

Wenn True gesetzt, werden die Koeffizienten auf positiv erzwungen. (Nur erlaubt, wenn y.ndim == 1).

check_inputbool, Standardwert=True

Wenn False gesetzt, werden die Eingabevalidierungsprüfungen übersprungen (einschließlich der Gram-Matrix, wenn sie bereitgestellt wird). Es wird davon ausgegangen, dass diese vom Aufrufer behandelt werden.

**paramskwargs

Schlüsselwortargumente, die an den Koordinatenabstiegslöser übergeben werden.

Gibt zurück:
alphasndarray der Form (n_alphas,)

Die Alphas entlang des Pfades, auf dem Modelle berechnet werden.

coefsndarray der Form (n_features, n_alphas) oder (n_targets, n_features, n_alphas)

Koeffizienten entlang des Pfades.

dual_gapsndarray der Form (n_alphas,)

Die dualen Abstände am Ende der Optimierung für jedes Alpha.

n_iterslist von int

Die Anzahl der Iterationen, die der Koordinatenabstieg-Optimierer benötigt, um die angegebene Toleranz für jedes Alpha zu erreichen. (Wird zurückgegeben, wenn return_n_iter auf True gesetzt ist).

Siehe auch

MultiTaskElasticNet

Multi-Task ElasticNet Modell, trainiert mit L1/L2 Mixed-Norm als Regularisator.

MultiTaskElasticNetCV

Multi-Task L1/L2 ElasticNet mit integrierter Kreuzvalidierung.

ElasticNet

Lineares Modell mit kombinierter L1- und L2-Prior als Regularisator.

ElasticNetCV

Elastic Net Modell mit iterativem Anpassen entlang eines Regularisierungspfades.

Anmerkungen

Ein Beispiel finden Sie unter Beispiele/linear_model/plot_lasso_lasso_lars_elasticnet_path.py.

Der zugrunde liegende Koordinatenabstiegslöser verwendet "gap-safe screening rules", um die Anpassungszeit zu beschleunigen, siehe Benutzerhandbuch zum Koordinatenabstieg.

Beispiele

>>> from sklearn.linear_model import enet_path
>>> from sklearn.datasets import make_regression
>>> X, y, true_coef = make_regression(
...    n_samples=100, n_features=5, n_informative=2, coef=True, random_state=0
... )
>>> true_coef
array([ 0.        ,  0.        ,  0.        , 97.9, 45.7])
>>> alphas, estimated_coef, _ = enet_path(X, y, n_alphas=3)
>>> alphas.shape
(3,)
>>> estimated_coef
 array([[ 0.,  0.787,  0.568],
        [ 0.,  1.120,  0.620],
        [-0., -2.129, -1.128],
        [ 0., 23.046, 88.939],
        [ 0., 10.637, 41.566]])
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 Residuenquadrate ((y_true - y_pred)** 2).sum() und \(v\) die gesamte Summe der Quadrate ((y_true - y_true.mean()) ** 2).sum() ist. 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 von y vorhersagt und die Eingabemerkmale ignoriert, 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), wobei n_samples_fitted die 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 auf y.

Anmerkungen

Der \(R^2\)-Wert, der beim Aufruf von score auf einem Regressor verwendet wird, verwendet ab Version 0.23 multioutput='uniform_average', um konsistent mit dem Standardwert von r2_score zu sein. Dies beeinflusst die Methode score aller Multi-Output-Regressoren (mit Ausnahme von MultiOutputRegressor).

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') Lasso[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=True aktiviert ist (siehe sklearn.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, an fit übergeben. Die Anforderung wird ignoriert, wenn keine Metadaten vorhanden sind.

  • False: Metadaten werden nicht angefordert und der Meta-Schätzer übergibt sie nicht an fit.

  • 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_weight in fit.

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$') Lasso[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=True aktiviert ist (siehe sklearn.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, an score übergeben. Die Anforderung wird ignoriert, wenn keine Metadaten vorhanden sind.

  • False: Metadaten werden nicht angefordert und der Meta-Schätzer übergibt sie nicht an score.

  • 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_weight in score.

Gibt zurück:
selfobject

Das aktualisierte Objekt.