LassoCV#
- class sklearn.linear_model.LassoCV(*, eps=0.001, n_alphas='deprecated', alphas='warn', fit_intercept=True, precompute='auto', max_iter=1000, tol=0.0001, copy_X=True, cv=None, verbose=False, n_jobs=None, positive=False, random_state=None, selection='cyclic')[Quelle]#
Lasso-Linearmodell mit iterativem Anpassen entlang eines Regularisierungspfades.
Siehe Glossareintrag für Cross-validation-Schätzer.
Das beste Modell wird durch Kreuzvalidierung ausgewählt.
Die Optimierungsziel für Lasso ist
(1 / (2 * n_samples)) * ||y - Xw||^2_2 + alpha * ||w||_1
Lesen Sie mehr im Benutzerhandbuch.
- Parameter:
- epsfloat, Standardwert=1e-3
Länge des Pfades.
eps=1e-3bedeutet, dassalpha_min / alpha_max = 1e-3.- n_alphasint, Standardwert=100
Anzahl der Alphas entlang des Regularisierungspfades.
Veraltet seit Version 1.7:
n_alphaswurde in Version 1.7 als veraltet markiert und wird in Version 1.9 entfernt. Verwenden Sie stattdessenalphas.- alphasarray-ähnlich oder int, Standardwert=None
Werte von alphas, die entlang des Regularisierungspfades getestet werden sollen. Wenn int, werden
alphasWerte automatisch generiert. Wenn array-ähnlich, Liste von zu verwendenden Alpha-Werten.Geändert in Version 1.7:
alphasakzeptiert einen ganzzahligen Wert, was die Notwendigkeit entfällt,n_alphaszu übergeben.Veraltet seit Version 1.7:
alphas=Nonewurde in Version 1.7 als veraltet markiert und wird in Version 1.9 entfernt. Zu diesem Zeitpunkt wird der Standardwert auf 100 gesetzt.- fit_interceptbool, Standardwert=True
Ob für dieses Modell ein Achsenabschnitt berechnet werden soll. Wenn auf False gesetzt, wird kein Achsenabschnitt in Berechnungen verwendet (d.h. die Daten werden als zentriert erwartet).
- 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.- 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
tolsind, prüft der Optimierungscode den dualen Abstand auf Optimalität und fährt fort, bis er kleiner oder gleichtolist.- copy_Xbool, Standardwert=True
Wenn
True, wird X kopiert; andernfalls kann es überschrieben werden.- cvint, Kreuzvalidierungsgenerator oder Iterable, Standardwert=None
Bestimmt die Strategie der Kreuzvalidierungsaufteilung. Mögliche Eingaben für cv sind
None, um die standardmäßige 5-fache Kreuzvalidierung zu verwenden,
int, um die Anzahl der Folds anzugeben.
Eine iterierbare Liste, die (Trainings-, Test-) Splits als Indizes-Arrays liefert.
Für int/None-Eingaben wird
KFoldverwendet.Siehe Benutzerhandbuch für die verschiedenen Kreuzvalidierungsstrategien, die hier verwendet werden können.
Geändert in Version 0.22: Der Standardwert von
cv, wenn None, hat sich von 3-Fold auf 5-Fold geändert.- verbosebool oder int, default=False
Ausmaß der Ausführlichkeit.
- n_jobsint, default=None
Anzahl der CPUs, die während der Kreuzvalidierung verwendet werden sollen.
Nonebedeutet 1, außer in einemjoblib.parallel_backend-Kontext.-1bedeutet die Verwendung aller Prozessoren. Siehe Glossar für weitere Details.- positivebool, Standardwert=False
Wenn positiv, werden Regressionskoeffizienten auf positive Werte beschränkt.
- 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:
- alpha_float
Die durch Kreuzvalidierung gewählte Strafe.
- coef_ndarray der Form (n_features,) oder (n_targets, n_features)
Parametervektor (w in der Kostenfunktionsformel).
- intercept_float oder ndarray der Form (n_targets,)
Unabhängiger Term in der Entscheidungsfunktion.
- mse_path_ndarray der Form (n_alphas, n_folds)
Mittlerer quadratischer Fehler für den Testdatensatz auf jedem Fold, variierend nach Alpha.
- alphas_ndarray der Form (n_alphas,)
Das Alpha-Gitter, das für das Training verwendet wird.
- dual_gap_float oder ndarray der Form (n_targets,)
Die duale Lücke am Ende der Optimierung für das optimale Alpha (
alpha_).- n_iter_int
Anzahl der Iterationen, die vom Koordinatenabstiegslöser durchgeführt wurden, um die angegebene Toleranz für das optimale Alpha 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
XMerkmalnamen hat, die alle Zeichenketten sind.Hinzugefügt in Version 1.0.
Siehe auch
lars_pathBerechnet den Least Angle Regression- oder Lasso-Pfad unter Verwendung des LARS-Algorithmus.
lasso_pathBerechnet den Lasso-Pfad mit Koordinatenabstieg.
LassoDer Lasso ist ein lineares Modell, das spärliche Koeffizienten schätzt.
LassoLarsLasso-Modell, angepasst mit Least Angle Regression, auch bekannt als Lars.
LassoCVLasso-Linearmodell mit iterativem Anpassen entlang eines Regularisierungspfades.
LassoLarsCVKreuzvalidiertes Lasso mit dem LARS-Algorithmus.
Anmerkungen
In
fitwird das Modell, sobald der beste Parameteralphadurch Kreuzvalidierung gefunden wurde, erneut mit dem gesamten Trainingsdatensatz trainiert.Um unnötige Speicherduplizierung zu vermeiden, sollte das
XArgument derfitMethode direkt als Fortran-kontinuierliches numpy-Array übergeben werden.Ein Beispiel finden Sie unter Beispiele/linear_model/plot_lasso_model_selection.py.
LassoCVführt zu anderen Ergebnissen als eine Hyperparameter-Suche mitGridSearchCVmit einemLasso-Modell. InLassoCVwird ein Modell für einen gegebenen Straftermalphawarm gestartet, indem die Koeffizienten des nächstgelegenen Modells (trainiert in der vorherigen Iteration) auf dem Regularisierungspfad verwendet werden. Dies beschleunigt in der Regel die Hyperparameter-Suche.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 LassoCV >>> from sklearn.datasets import make_regression >>> X, y = make_regression(noise=4, random_state=0) >>> reg = LassoCV(cv=5, random_state=0).fit(X, y) >>> reg.score(X, y) 0.9993 >>> reg.predict(X[:1,]) array([-79.4755331])
- fit(X, y, sample_weight=None, **params)[Quelle]#
Lasso-Modell mit Koordinatenabstieg trainieren.
Die Anpassung erfolgt auf einem Gitter von Alphas und dem besten durch Kreuzvalidierung geschätzten Alpha.
- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features)
Trainingsdaten. Übergeben Sie direkt als Fortran-kontinuierliche Daten, um unnötige Speicherduplizierung zu vermeiden. Wenn y eine einzelne Ausgabe hat, kann X spärlich sein. Beachten Sie, dass große spärliche Matrizen und Arrays, die
int64Indizes benötigen, nicht akzeptiert werden.- yarray-like von Form (n_samples,)
Zielwerte.
- sample_weightfloat oder array-ähnlich der Form (n_samples,), Standard=None
Stichprobengewichte, die für das Training und die Bewertung des gewichteten mittleren quadratischen Fehlers jeder CV-Falte verwendet werden. Beachten Sie, dass der kreuzvalidierte MSE, der schließlich zur Ermittlung des besten Modells verwendet wird, der ungewichtete Durchschnitt über die (gewichteten) MSEs jeder Testfalte ist.
- **paramsdict, default=None
Parameter, die an den CV-Splitter übergeben werden sollen.
Hinzugefügt in Version 1.4: Nur verfügbar, wenn
enable_metadata_routing=True, was durch Verwendung vonsklearn.set_config(enable_metadata_routing=True)eingestellt werden kann. Weitere Details finden Sie im Benutzerhandbuch für Metadaten-Routing.
- Gibt zurück:
- selfobject
Gibt eine Instanz des trainierten Modells zurück.
- get_metadata_routing()[Quelle]#
Holt das Metadaten-Routing dieses Objekts.
Bitte prüfen Sie im Benutzerhandbuch, wie der Routing-Mechanismus funktioniert.
Hinzugefügt in Version 1.4.
- Gibt zurück:
- routingMetadataRouter
Ein
MetadataRouter, der die 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, *, 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, **params)[Quelle]#
Berechnet den Lasso-Pfad mit Koordinatenabstieg.
Die Lasso-Optimierungsfunktion variiert für Mono- und Multi-Ausgaben.
Für Mono-Ausgaben-Aufgaben ist es
(1 / (2 * n_samples)) * ||y - Xw||^2_2 + alpha * ||w||_1
Für Multi-Ausgaben-Aufgaben ist es
(1 / (2 * n_samples)) * ||Y - XW||^2_Fro + alpha * ||W||_21
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
yeine Mono-Ausgabe ist, kannXspärlich sein.- y{array-ähnlich, spärsitätsmatrix} der Form (n_samples,) oder (n_samples, n_targets)
Zielwerte.
- epsfloat, Standardwert=1e-3
Länge des Pfades.
eps=1e-3bedeutet, dassalpha_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 Modelle berechnet werden sollen. 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).- **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.
Siehe auch
lars_pathBerechnet den Least Angle Regression- oder Lasso-Pfad unter Verwendung des LARS-Algorithmus.
LassoDer Lasso ist ein lineares Modell, das spärliche Koeffizienten schätzt.
LassoLarsLasso-Modell, angepasst mit Least Angle Regression, auch bekannt als Lars.
LassoCVLasso-Linearmodell mit iterativem Anpassen entlang eines Regularisierungspfades.
LassoLarsCVKreuzvalidiertes Lasso mit dem LARS-Algorithmus.
sklearn.decomposition.sparse_encodeSchätzer, der verwendet werden kann, um Signale in eine spärliche Linearkombination von Atomen aus einem festen Satz zu transformieren.
Anmerkungen
Ein Beispiel finden Sie unter Beispiele/linear_model/plot_lasso_lasso_lars_elasticnet_path.py.
Um unnötige Speicherduplizierung zu vermeiden, sollte das X-Argument der fit-Methode direkt als Fortran-kontinuierlicher numpy-Array übergeben werden.
Beachten Sie, dass in bestimmten Fällen der Lars-Solver erheblich schneller sein kann, um diese Funktionalität zu implementieren. Insbesondere kann lineare Interpolation verwendet werden, um Modellkoeffizienten zwischen den von lars_path ausgegebenen Werten abzurufen.
Der zugrunde liegende Koordinatenabstiegslöser verwendet "gap-safe screening rules", um die Anpassungszeit zu beschleunigen, siehe Benutzerhandbuch zum Koordinatenabstieg.
Beispiele
Vergleich von lasso_path und lars_path mit Interpolation
>>> import numpy as np >>> from sklearn.linear_model import lasso_path >>> X = np.array([[1, 2, 3.1], [2.3, 5.4, 4.3]]).T >>> y = np.array([1, 2, 3.1]) >>> # Use lasso_path to compute a coefficient path >>> _, coef_path, _ = lasso_path(X, y, alphas=[5., 1., .5]) >>> print(coef_path) [[0. 0. 0.46874778] [0.2159048 0.4425765 0.23689075]]
>>> # Now use lars_path and 1D linear interpolation to compute the >>> # same path >>> from sklearn.linear_model import lars_path >>> alphas, active, coef_path_lars = lars_path(X, y, method='lasso') >>> from scipy import interpolate >>> coef_path_continuous = interpolate.interp1d(alphas[::-1], ... coef_path_lars[:, ::-1]) >>> print(coef_path_continuous([5., 1., .5])) [[0. 0. 0.46915237] [0.2159048 0.4425765 0.23668876]]
- 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 quadrierten Abweichungen vom Mittelwert 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, unabhängig von den Eingabefeatures, 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 diescoreMethode aller Multioutput-Regressoren (mit Ausnahme vonMultiOutputRegressor).
- set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') LassoCV[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$') LassoCV[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#
Häufige Fallstricke bei der Interpretation von Koeffizienten linearer Modelle