DictionaryLearning#
- class sklearn.decomposition.DictionaryLearning(n_components=None, *, alpha=1, max_iter=1000, tol=1e-08, fit_algorithm='lars', transform_algorithm='omp', transform_n_nonzero_coefs=None, transform_alpha=None, n_jobs=None, code_init=None, dict_init=None, callback=None, verbose=False, split_sign=False, random_state=None, positive_code=False, positive_dict=False, transform_max_iter=1000)[Quelle]#
Dictionary Learning.
Findet ein Dictionary (eine Menge von Atomen), das gut zur spärlichen Kodierung der angepassten Daten geeignet ist.
Löst das Optimierungsproblem
(U^*,V^*) = argmin 0.5 || X - U V ||_Fro^2 + alpha * || U ||_1,1 (U,V) with || V_k ||_2 <= 1 for all 0 <= k < n_components
||.||_Fro steht für die Frobenius-Norm und ||.||_1,1 steht für die elementweise Matrixnorm, die die Summe der absoluten Werte aller Einträge in der Matrix ist.
Lesen Sie mehr im Benutzerhandbuch.
- Parameter:
- n_componentsint, default=None
Anzahl der zu extrahierenden Dictionary-Elemente. Wenn None, dann wird
n_componentsaufn_featuresgesetzt.- alphafloat, default=1.0
Parameter zur Steuerung der Spärlichkeit.
- max_iterint, default=1000
Maximale Anzahl von Iterationen, die durchgeführt werden sollen.
- tolfloat, default=1e-8
Toleranz für numerische Fehler.
- fit_algorithm{‘lars’, ‘cd’}, default=’lars’
'lars': verwendet die Least Angle Regression-Methode zur Lösung des Lasso-Problems (lars_path);'cd': verwendet die Koordinatensenkungs-Methode zur Berechnung der Lasso-Lösung (Lasso). Lars ist schneller, wenn die geschätzten Komponenten spärlich sind.
Hinzugefügt in Version 0.17: cd Koordinatensenkungs-Methode zur Verbesserung der Geschwindigkeit.
- transform_algorithm{‘lasso_lars’, ‘lasso_cd’, ‘lars’, ‘omp’, ‘threshold’}, default=’omp’
Algorithmus, der zur Transformation der Daten verwendet wird.
'lars': verwendet die Least Angle Regression-Methode (lars_path);'lasso_lars': verwendet Lars zur Berechnung der Lasso-Lösung.'lasso_cd': verwendet die Koordinatensenkungs-Methode zur Berechnung der Lasso-Lösung (Lasso).'lasso_lars'ist schneller, wenn die geschätzten Komponenten spärlich sind.'omp': verwendet Orthogonal Matching Pursuit zur Schätzung der spärlichen Lösung.'threshold': setzt alle Koeffizienten, die kleiner als alpha sind, aus der Projektiondictionary * X'auf Null.
Hinzugefügt in Version 0.17: lasso_cd Koordinatensenkungs-Methode zur Verbesserung der Geschwindigkeit.
- transform_n_nonzero_coefsint, default=None
Anzahl der Nicht-Null-Koeffizienten, die in jeder Spalte der Lösung angestrebt werden. Dies wird nur von
algorithm='lars'undalgorithm='omp'verwendet. WennNone, dann isttransform_n_nonzero_coefs=int(n_features / 10).- transform_alphafloat, default=None
Wenn
algorithm='lasso_lars'oderalgorithm='lasso_cd', istalphadie Strafe, die auf die L1-Norm angewendet wird. Wennalgorithm='threshold', istalphader absolute Wert des Schwellenwerts, unterhalb dessen Koeffizienten auf Null gesetzt werden. WennNone, ist der Standardwertalpha.Geändert in Version 1.2: Wenn None, wurde der Standardwert von 1.0 auf
alphageändert.- n_jobsint oder None, default=None
Anzahl der parallelen Jobs, die ausgeführt werden sollen.
Nonebedeutet 1, es sei denn, Sie befinden sich in einemjoblib.parallel_backend-Kontext.-1bedeutet die Verwendung aller Prozessoren. Weitere Einzelheiten finden Sie im Glossar.- code_initndarray der Form (n_samples, n_components), default=None
Anfangswert für den Code für einen Warmstart. Wird nur verwendet, wenn
code_initunddict_initnicht None sind.- dict_initndarray der Form (n_components, n_features), default=None
Anfangswerte für das Dictionary für einen Warmstart. Wird nur verwendet, wenn
code_initunddict_initnicht None sind.- callbackcallable, default=None
Aufrufbar, das alle fünf Iterationen aufgerufen wird.
Hinzugefügt in Version 1.3.
- verbosebool, default=False
Zur Steuerung der Ausführlichkeit des Verfahrens.
- split_signbool, default=False
Ob der spärliche Feature-Vektor in die Konkatenation seines negativen und positiven Teils aufgeteilt werden soll. Dies kann die Leistung nachgeschalteter Klassifikatoren verbessern.
- random_stateint, RandomState-Instanz oder None, default=None
Wird zur Initialisierung des Dictionarys verwendet, wenn
dict_initnicht angegeben ist, zum zufälligen Mischen der Daten, wennshuffleaufTruegesetzt ist, und zum Aktualisieren des Dictionarys. Übergeben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg. Siehe Glossar.- positive_codebool, default=False
Ob die Positivität bei der Ermittlung des Codes erzwungen werden soll.
Hinzugefügt in Version 0.20.
- positive_dictbool, default=False
Ob die Positivität bei der Ermittlung des Dictionarys erzwungen werden soll.
Hinzugefügt in Version 0.20.
- transform_max_iterint, default=1000
Maximale Anzahl von Iterationen, die durchgeführt werden sollen, wenn
algorithm='lasso_cd'oder'lasso_lars'.Hinzugefügt in Version 0.22.
- Attribute:
- components_ndarray der Form (n_components, n_features)
Dictionary-Atome, die aus den Daten extrahiert wurden.
- error_array
Vektor der Fehler bei jeder Iteration.
- 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 durchgeführten Iterationen.
Siehe auch
MiniBatchDictionaryLearningEine schnellere, weniger genaue Version des Dictionary-Lernalgorithmus.
MiniBatchSparsePCAMini-Batch Sparse Principal Components Analysis.
SparseCoderFindet eine spärliche Darstellung von Daten aus einem festen, vordefinierten Dictionary.
SparsePCASpärliche Hauptkomponentenanalyse.
Referenzen
J. Mairal, F. Bach, J. Ponce, G. Sapiro, 2009: Online dictionary learning for sparse coding (https://www.di.ens.fr/~fbach/mairal_icml09.pdf)
Beispiele
>>> import numpy as np >>> from sklearn.datasets import make_sparse_coded_signal >>> from sklearn.decomposition import DictionaryLearning >>> X, dictionary, code = make_sparse_coded_signal( ... n_samples=30, n_components=15, n_features=20, n_nonzero_coefs=10, ... random_state=42, ... ) >>> dict_learner = DictionaryLearning( ... n_components=15, transform_algorithm='lasso_lars', transform_alpha=0.1, ... random_state=42, ... ) >>> X_transformed = dict_learner.fit(X).transform(X)
Wir können den Grad der Spärlichkeit von
X_transformedüberprüfen.>>> np.mean(X_transformed == 0) np.float64(0.527)
Wir können die durchschnittliche quadrierte euklidische Norm des Rekonstruktionsfehlers des spärlich kodierten Signals im Verhältnis zur quadrierten euklidischen Norm des ursprünglichen Signals vergleichen.
>>> X_hat = X_transformed @ dict_learner.components_ >>> np.mean(np.sum((X_hat - X) ** 2, axis=1) / np.sum(X ** 2, axis=1)) np.float64(0.056)
- fit(X, y=None)[Quelle]#
Passt das Modell anhand von Daten in X an.
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Trainingsvektor, wobei
n_samplesdie Anzahl der Stichproben undn_featuresdie Anzahl der Merkmale ist.- yIgnoriert
Wird nicht verwendet, ist aber aus Gründen der API-Konsistenz per Konvention vorhanden.
- Gibt zurück:
- selfobject
Gibt die Instanz selbst zurück.
- fit_transform(X, y=None)[Quelle]#
Passt das Modell anhand von Daten in X an und gibt die transformierten Daten zurück.
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Trainingsvektor, wobei
n_samplesdie Anzahl der Stichproben undn_featuresdie Anzahl der Merkmale ist.- yIgnoriert
Wird nicht verwendet, ist aber aus Gründen der API-Konsistenz per Konvention vorhanden.
- Gibt zurück:
- Vndarray der Form (n_samples, n_components)
Transformierte Daten.
- get_feature_names_out(input_features=None)[Quelle]#
Holt die Ausgabemerkmale für die Transformation.
Die Feature-Namen werden mit dem kleingeschriebenen Klassennamen präfixiert. Wenn der Transformer z.B. 3 Features ausgibt, dann sind die Feature-Namen:
["klassenname0", "klassenname1", "klassenname2"].- Parameter:
- input_featuresarray-like von str oder None, default=None
Wird nur verwendet, um die Feature-Namen mit den in
fitgesehenen Namen zu validieren.
- Gibt zurück:
- feature_names_outndarray von str-Objekten
Transformierte Merkmalnamen.
- 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.
- inverse_transform(X)[Quelle]#
Daten zurück in ihren ursprünglichen Raum transformieren.
- Parameter:
- Xarray-ähnlich von der Form (n_samples, n_components)
Zu transformierende Daten. Muss die gleiche Anzahl von Komponenten wie die zum Trainieren des Modells verwendeten Daten haben.
- Gibt zurück:
- X_originalndarray von der Form (n_samples, n_features)
Transformierte Daten.
- set_output(*, transform=None)[Quelle]#
Ausgabecontainer festlegen.
Siehe Einführung in die set_output API für ein Beispiel zur Verwendung der API.
- Parameter:
- transform{“default”, “pandas”, “polars”}, default=None
Konfiguriert die Ausgabe von
transformundfit_transform."default": Standardausgabeformat eines Transformers"pandas": DataFrame-Ausgabe"polars": Polars-AusgabeNone: Die Transformationskonfiguration bleibt unverändert
Hinzugefügt in Version 1.4: Die Option
"polars"wurde hinzugefügt.
- Gibt zurück:
- selfestimator instance
Schätzer-Instanz.
- 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.
- transform(X)[Quelle]#
Kodiert die Daten als spärliche Kombination der Dictionary-Atome.
Die Kodierungsmethode wird durch den Objektparameter
transform_algorithmbestimmt.- Parameter:
- Xndarray der Form (n_samples, n_features)
Zu transformierende Testdaten. Muss die gleiche Anzahl von Merkmalen wie die zum Trainieren des Modells verwendeten Daten haben.
- Gibt zurück:
- X_newndarray der Form (n_samples, n_components)
Transformierte Daten.