MiniBatchDictionaryLearning#
- class sklearn.decomposition.MiniBatchDictionaryLearning(n_components=None, *, alpha=1, max_iter=1000, fit_algorithm='lars', n_jobs=None, batch_size=256, shuffle=True, dict_init=None, transform_algorithm='omp', transform_n_nonzero_coefs=None, transform_alpha=None, verbose=False, split_sign=False, random_state=None, positive_code=False, positive_dict=False, transform_max_iter=1000, callback=None, tol=0.001, max_no_improvement=10)[source]#
Mini-Batch Dictionary Learning.
Findet ein Dictionary (eine Menge von Atomen), das gut zur dünnbesetzten 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 Absolutwerte aller Einträge in der Matrix ist.
Lesen Sie mehr im Benutzerhandbuch.
- Parameter:
- n_componentsint, default=None
Anzahl der zu extrahierenden Dictionary-Elemente.
- alphafloat, Standard=1
Parameter zur Steuerung der Spärlichkeit.
- max_iterint, default=1_000
Maximale Anzahl von Iterationen über den vollständigen Datensatz, bevor unabhängig von frühen Stoppkriterien beendet wird.
Hinzugefügt in Version 1.1.
- fit_algorithm{‘lars’, ‘cd’}, default=’lars’
Der verwendete Algorithmus
'lars': verwendet die Least Angle Regression-Methode zur Lösung des Lasso-Problems (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.- batch_sizeint, default=256
Anzahl der Samples in jedem Mini-Batch.
Geändert in Version 1.3: Der Standardwert von
batch_sizeänderte sich von 3 auf 256 in Version 1.3.- shufflebool, Standard=True
Ob die Samples vor der Batch-Bildung gemischt werden sollen.
- dict_initndarray der Form (n_components, n_features), default=None
Anfangswert des Dictionaries für Szenarien mit warmem Neustart.
- 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 (linear_model.lars_path);'lasso_lars': verwendet Lars zur Berechnung der Lasso-Lösung.'lasso_cd': verwendet die Coordinate Descent-Methode zur Berechnung der Lasso-Lösung (linear_model.Lasso).'lasso_lars'ist schneller, wenn die geschätzten Komponenten dünnbesetzt sind.'omp': verwendet Orthogonal Matching Pursuit zur Schätzung der dünnbesetzten Lösung.'threshold': setzt alle Koeffizienten, die kleiner als alpha sind, aus der Projektiondictionary * X'auf Null.
- 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, danntransform_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 Absolutwert des Schwellenwerts, unterhalb dessen Koeffizienten auf Null gesetzt werden. WennNone, wird standardmäßigalphaverwendet.Geändert in Version 1.2: Wenn None, änderte sich der Standardwert von 1.0 zu
alpha.- verbosebool oder int, 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.
- callbackcallable, default=None
Ein aufrufbares Objekt, das am Ende jeder Iteration aufgerufen wird.
Hinzugefügt in Version 1.1.
- tolfloat, Standard=1e-3
Steuert das frühe Stoppen basierend auf der Norm der Unterschiede im Dictionary zwischen 2 Schritten.
Um das frühe Stoppen basierend auf Änderungen im Dictionary zu deaktivieren, setzen Sie
tolauf 0.0.Hinzugefügt in Version 1.1.
- max_no_improvementint, default=10
Steuert das frühe Stoppen basierend auf der aufeinanderfolgenden Anzahl von Minibatches, die keine Verbesserung der geglätteten Kostenfunktion ergeben.
Um die Konvergenzerkennung basierend auf der Kostenfunktion zu deaktivieren, setzen Sie
max_no_improvementauf None.Hinzugefügt in Version 1.1.
- Attribute:
- components_ndarray der Form (n_components, n_features)
Aus den Daten extrahierte Komponenten.
- 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 Iterationen über den gesamten Datensatz.
- n_steps_int
Anzahl der verarbeiteten Mini-Batches.
Hinzugefügt in Version 1.1.
Siehe auch
DictionaryLearningFindet ein Dictionary, das Daten spärlich kodiert.
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 MiniBatchDictionaryLearning >>> 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 = MiniBatchDictionaryLearning( ... n_components=15, batch_size=3, transform_algorithm='lasso_lars', ... transform_alpha=0.1, max_iter=20, random_state=42) >>> X_transformed = dict_learner.fit_transform(X)
Wir können den Grad der Dünnbesetztheit von
X_transformedüberprüfen.>>> np.mean(X_transformed == 0) > 0.5 np.True_
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.052)
Ein detaillierteres Beispiel finden Sie unter Bildrauschen mit Dictionary Learning
- fit(X, y=None)[source]#
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, **fit_params)[source]#
An Daten anpassen, dann transformieren.
Passt den Transformer an
Xundymit optionalen Parameternfit_paramsan und gibt eine transformierte Version vonXzurück.- Parameter:
- Xarray-like der Form (n_samples, n_features)
Eingabestichproben.
- yarray-like der Form (n_samples,) oder (n_samples, n_outputs), Standardwert=None
Zielwerte (None für unüberwachte Transformationen).
- **fit_paramsdict
Zusätzliche Fit-Parameter. Nur übergeben, wenn der Estimator zusätzliche Parameter in seiner
fit-Methode akzeptiert.
- Gibt zurück:
- X_newndarray array der Form (n_samples, n_features_new)
Transformiertes Array.
- get_feature_names_out(input_features=None)[source]#
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()[source]#
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)[source]#
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)[source]#
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.
- partial_fit(X, y=None)[source]#
Aktualisiert das Modell mit den Daten in X als Mini-Batch.
- 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.
- set_output(*, transform=None)[source]#
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)[source]#
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)[source]#
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.