dict_learning#
- sklearn.decomposition.dict_learning(X, n_components, *, alpha, max_iter=100, tol=1e-08, method='lars', n_jobs=None, dict_init=None, code_init=None, callback=None, verbose=False, random_state=None, return_n_iter=False, positive_dict=False, positive_code=False, method_max_iter=1000)[Quelle]#
Löst ein Dictionary-Learning-Matrixfaktorisierungsproblem.
Findet das beste Dictionary und den entsprechenden dünnbesetzten Code zur Approximation der Datenmatrix X durch Lösung von
(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
wobei V das Dictionary und U der dünnbesetzte Code ist. ||.||_Fro steht für die Frobenius-Norm und ||.||_1,1 steht für die elementweise Matrixnorm, die die Summe der Absolutwerte aller Einträge in der Matrix ist.
Lesen Sie mehr im Benutzerhandbuch.
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Datenmatrix.
- n_componentsint
Anzahl der zu extrahierenden Dictionary-Atome.
- alphaint oder float
Parameter zur Steuerung der Spärlichkeit.
- max_iterint, default=100
Maximale Anzahl von Iterationen, die durchgeführt werden sollen.
- tolfloat, default=1e-8
Toleranz für die Abbruchbedingung.
- method{‘lars’, ‘cd’}, Standard=’lars’
Die verwendete Methode
'lars': verwendet die Least-Angle-Regression-Methode zur Lösung des Lasso-Problems (linear_model.lars_path);problem (
linear_model.lars_path);
'cd': verwendet die Koordinatensenkungsmethode zur Berechnung der Lasso-Lösung (linear_model.Lasso). Lars wird schneller sein, wenn die geschätzten Komponenten spärlich sind.
- n_jobsint, 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.- dict_initndarray der Form (n_components, n_features), default=None
Anfangswert für das Dictionary für Warm-Start-Szenarien. Nur verwendet, wenn
code_initunddict_initnicht None sind.- code_initndarray der Form (n_samples, n_components), Standard=None
Anfangswert für den dünnbesetzten Code für Warm-Start-Szenarien. Nur verwendet, wenn
code_initunddict_initnicht None sind.- callbackcallable, default=None
Aufrufbar, das alle fünf Iterationen aufgerufen wird.
- verbosebool, default=False
Zur Steuerung der Ausführlichkeit des Verfahrens.
- random_stateint, RandomState-Instanz oder None, default=None
Wird zur zufälligen Initialisierung des Dictionarys verwendet. Geben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg an. Siehe Glossar.
- return_n_iterbool, Standard=False
Ob die Anzahl der Iterationen zurückgegeben werden soll oder nicht.
- positive_dictbool, default=False
Ob die Positivität bei der Ermittlung des Dictionarys erzwungen werden soll.
Hinzugefügt in Version 0.20.
- positive_codebool, default=False
Ob die Positivität bei der Ermittlung des Codes erzwungen werden soll.
Hinzugefügt in Version 0.20.
- method_max_iterint, Standard=1000
Maximale Anzahl von Iterationen, die durchgeführt werden sollen.
Hinzugefügt in Version 0.22.
- Gibt zurück:
- codendarray of shape (n_samples, n_components)
Der Faktor des dünnbesetzten Codes in der Matrixfaktorisierung.
- dictionaryndarray der Form (n_components, n_features),
Der Dictionary-Faktor in der Matrixfaktorisierung.
- errorsarray
Vektor der Fehler bei jeder Iteration.
- n_iterint
Anzahl der durchgeführten Iterationen. Wird nur zurückgegeben, wenn
return_n_iterauf True gesetzt ist.
Siehe auch
dict_learning_onlineLöst ein Dictionary-Learning-Matrixfaktorisierungsproblem online.
DictionaryLearningFindet ein Dictionary, das Daten spärlich kodiert.
MiniBatchDictionaryLearningEin schnellerer, weniger genauer Algorithmus für das Dictionary-Lernen.
SparsePCASpärliche Hauptkomponentenanalyse.
MiniBatchSparsePCAMini-Batch Sparse Principal Components Analysis.
Beispiele
>>> import numpy as np >>> from sklearn.datasets import make_sparse_coded_signal >>> from sklearn.decomposition import dict_learning >>> X, _, _ = make_sparse_coded_signal( ... n_samples=30, n_components=15, n_features=20, n_nonzero_coefs=10, ... random_state=42, ... ) >>> U, V, errors = dict_learning(X, n_components=15, alpha=0.1, random_state=42)
Wir können den Grad der Sparsity von
Uüberprüfen.>>> np.mean(U == 0) np.float64(0.62)
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 = U @ V >>> np.mean(np.sum((X_hat - X) ** 2, axis=1) / np.sum(X ** 2, axis=1)) np.float64(0.0192)