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_components auf n_features gesetzt.

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 Projektion dictionary * 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' und algorithm='omp' verwendet. Wenn None, dann ist transform_n_nonzero_coefs=int(n_features / 10).

transform_alphafloat, default=None

Wenn algorithm='lasso_lars' oder algorithm='lasso_cd', ist alpha die Strafe, die auf die L1-Norm angewendet wird. Wenn algorithm='threshold', ist alpha der absolute Wert des Schwellenwerts, unterhalb dessen Koeffizienten auf Null gesetzt werden. Wenn None, ist der Standardwert alpha.

Geändert in Version 1.2: Wenn None, wurde der Standardwert von 1.0 auf alpha geändert.

n_jobsint oder None, default=None

Anzahl der parallelen Jobs, die ausgeführt werden sollen. None bedeutet 1, es sei denn, Sie befinden sich in einem joblib.parallel_backend-Kontext. -1 bedeutet 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_init und dict_init nicht 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_init und dict_init nicht 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_init nicht angegeben ist, zum zufälligen Mischen der Daten, wenn shuffle auf True gesetzt 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 X Merkmalnamen hat, die alle Zeichenketten sind.

Hinzugefügt in Version 1.0.

n_iter_int

Anzahl der durchgeführten Iterationen.

Siehe auch

MiniBatchDictionaryLearning

Eine schnellere, weniger genaue Version des Dictionary-Lernalgorithmus.

MiniBatchSparsePCA

Mini-Batch Sparse Principal Components Analysis.

SparseCoder

Findet eine spärliche Darstellung von Daten aus einem festen, vordefinierten Dictionary.

SparsePCA

Spä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_samples die Anzahl der Stichproben und n_features die 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_samples die Anzahl der Stichproben und n_features die 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 fit gesehenen 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 transform und fit_transform.

  • "default": Standardausgabeformat eines Transformers

  • "pandas": DataFrame-Ausgabe

  • "polars": Polars-Ausgabe

  • None: 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_algorithm bestimmt.

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.