NMF#

class sklearn.decomposition.NMF(n_components='auto', *, init=None, solver='cd', beta_loss='frobenius', tol=0.0001, max_iter=200, random_state=None, alpha_W=0.0, alpha_H='same', l1_ratio=0.0, verbose=0, shuffle=False)[Quelle]#

Non-Negative Matrix Factorization (NMF).

Finde zwei nicht-negative Matrizen, d.h. Matrizen mit allen nicht-negativen Elementen, (W, H), deren Produkt die nicht-negative Matrix X approximiert. Diese Faktorisierung kann zum Beispiel zur Dimensionsreduktion, Quellentrennung oder Extraktion von Themen verwendet werden.

Die Zielfunktion ist

\[ \begin{align}\begin{aligned}L(W, H) &= 0.5 * ||X - WH||_{loss}^2\\ &+ alpha\_W * l1\_ratio * n\_features * ||vec(W)||_1\\ &+ alpha\_H * l1\_ratio * n\_samples * ||vec(H)||_1\\ &+ 0.5 * alpha\_W * (1 - l1\_ratio) * n\_features * ||W||_{Fro}^2\\ &+ 0.5 * alpha\_H * (1 - l1\_ratio) * n\_samples * ||H||_{Fro}^2,\end{aligned}\end{align} \]

wobei \(||A||_{Fro}^2 = \sum_{i,j} A_{ij}^2\) (Frobenius-Norm) und \(||vec(A)||_1 = \sum_{i,j} abs(A_{ij})\) (Elementweise L1-Norm).

Die allgemeine Norm \(||X - WH||_{loss}\) kann die Frobenius-Norm oder eine andere unterstützte Beta-Divergenz-Verlustfunktion darstellen. Die Wahl zwischen den Optionen wird durch den Parameter beta_loss gesteuert.

Die Regularisierungsterme werden mit n_features für W und mit n_samples für H skaliert, um ihre Auswirkung im Verhältnis zueinander und zum Datenanpassungsterm so unabhängig wie möglich von der Größe n_samples des Trainingsdatensatzes auszubalancieren.

Die Zielfunktion wird mit einer alternierenden Minimierung von W und H minimiert.

Beachten Sie, dass die transformierten Daten W und die Komponentenmatrix H genannt werden. In der NMF-Literatur ist die Namenskonvention normalerweise umgekehrt, da die Datenmatrix X transponiert ist.

Lesen Sie mehr im Benutzerhandbuch.

Parameter:
n_componentsint oder {‘auto’} oder None, default=’auto’

Anzahl der Komponenten. Wenn None, werden alle Merkmale beibehalten. Wenn n_components='auto', wird die Anzahl der Komponenten automatisch aus den Formen von W oder H abgeleitet.

Geändert in Version 1.4: `auto`-Wert hinzugefügt.

Geändert in Version 1.6: Standardwert von None auf 'auto' geändert.

init{‘random’, ‘nndsvd’, ‘nndsvda’, ‘nndsvdar’, ‘custom’}, default=None

Methode zur Initialisierung des Verfahrens. Gültige Optionen

  • None: ‚nndsvda‘, wenn n_components <= min(n_samples, n_features), ansonsten zufällig.

  • 'random': nicht-negative Zufallsmatrizen, skaliert mit: sqrt(X.mean() / n_components)

  • 'nndsvd': Nonnegative Double Singular Value Decomposition (NNDSVD) Initialisierung (besser für Sparsity)

  • 'nndsvda': NNDSVD mit Nullen, die mit dem Durchschnitt von X gefüllt sind (besser, wenn Sparsity nicht gewünscht ist)

  • 'nndsvdar': NNDSVD mit Nullen, die mit kleinen Zufallswerten gefüllt sind (generell schneller, weniger genaue Alternative zu NNDSVDa, wenn Sparsity nicht gewünscht ist)

  • 'custom': Verwenden Sie benutzerdefinierte Matrizen W und H, die beide bereitgestellt werden müssen.

Geändert in Version 1.1: Wenn init=None und n_components kleiner als n_samples und n_features ist, wird standardmäßig nndsvda anstelle von nndsvd verwendet.

solver{‘cd’, ‘mu’}, standard=‘cd’

Numerischer Solver, der verwendet werden soll

  • ‘cd’ ist ein Coordinate Descent Solver.

  • ‘mu’ ist ein Multiplicative Update Solver.

Hinzugefügt in Version 0.17: Coordinate Descent Solver.

Hinzugefügt in Version 0.19: Multiplicative Update Solver.

beta_lossfloat oder {‘frobenius’, ‘kullback-leibler’, ‘itakura-saito’}, default=’frobenius’

Zu minimierende Beta-Divergenz, die den Abstand zwischen X und dem Skalarprodukt WH misst. Beachten Sie, dass Werte, die sich von ‚frobenius‘ (oder 2) und ‚kullback-leibler‘ (oder 1) unterscheiden, zu deutlich langsameren Fits führen. Beachten Sie, dass für beta_loss <= 0 (oder ‚itakura-saito‘) die Eingabematrix X keine Nullen enthalten darf. Nur für den Solver ‚mu‘ verwendet.

Hinzugefügt in Version 0.19.

tolfloat, Standard=1e-4

Toleranz der Abbruchbedingung.

max_iterint, Standard=200

Maximale Anzahl von Iterationen vor Zeitüberschreitung.

random_stateint, RandomState-Instanz oder None, default=None

Verwendet für die Initialisierung (wenn init == ‚nndsvdar‘ oder ‚random‘) und im Coordinate Descent. Übergeben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg. Siehe Glossar.

alpha_Wfloat, default=0.0

Konstante, die die Regularisierungsterme von W multipliziert. Setzen Sie sie auf Null (Standardwert), um keine Regularisierung bei W zu haben.

Hinzugefügt in Version 1.0.

alpha_Hfloat oder “same”, default=”same”

Konstante, die die Regularisierungsterme von H multipliziert. Setzen Sie sie auf Null, um keine Regularisierung bei H zu haben. Wenn “same” (Standardwert), nimmt sie denselben Wert wie alpha_W an.

Hinzugefügt in Version 1.0.

l1_ratiofloat, default=0.0

Der Regularisierungs-Mixing-Parameter, mit 0 <= l1_ratio <= 1. Für l1_ratio = 0 ist die Strafe eine elementweise L2-Strafe (auch Frobenius-Norm genannt). Für l1_ratio = 1 ist es eine elementweise L1-Strafe. Für 0 < l1_ratio < 1 ist die Strafe eine Kombination aus L1 und L2.

Hinzugefügt in Version 0.17: Regularisierungsparameter l1_ratio, der im Coordinate Descent Solver verwendet wird.

verboseint, default=0

Ob die Ausgabe ausführlich sein soll.

shufflebool, default=False

Wenn wahr, wird die Reihenfolge der Koordinaten im CD-Solver zufällig gewählt.

Hinzugefügt in Version 0.17: shuffle-Parameter, der im Coordinate Descent Solver verwendet wird.

Attribute:
components_ndarray der Form (n_components, n_features)

Faktorisierungsmatrix, manchmal auch „Wörterbuch“ genannt.

n_components_int

Die Anzahl der Komponenten. Sie ist gleich dem Parameter n_components, wenn dieser angegeben wurde. Andernfalls entspricht sie der Anzahl der Merkmale.

reconstruction_err_float

Frobenius-Norm der Matrixdifferenz oder Beta-Divergenz zwischen den Trainingsdaten X und den rekonstruierten Daten WH aus dem angepassten Modell.

n_iter_int

Tatsächliche Anzahl der Iterationen.

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.

Siehe auch

DictionaryLearning

Findet ein Dictionary, das Daten spärlich kodiert.

MiniBatchSparsePCA

Mini-Batch Sparse Principal Components Analysis.

PCA

Hauptkomponentenanalyse.

SparseCoder

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

SparsePCA

Spärliche Hauptkomponentenanalyse.

TruncatedSVD

Dimensionsreduktion mittels abgeschnittener SVD.

Referenzen

[1]

„Fast local algorithms for large scale nonnegative matrix and tensor factorizations“ Cichocki, Andrzej, und P. H. A. N. Anh-Huy. IEICE transactions on fundamentals of electronics, communications and computer sciences 92.3: 708-721, 2009.

[2]

„Algorithms for nonnegative matrix factorization with the beta-divergence“ Fevotte, C., & Idier, J. (2011). Neural Computation, 23(9).

Beispiele

>>> import numpy as np
>>> X = np.array([[1, 1], [2, 1], [3, 1.2], [4, 1], [5, 0.8], [6, 1]])
>>> from sklearn.decomposition import NMF
>>> model = NMF(n_components=2, init='random', random_state=0)
>>> W = model.fit_transform(X)
>>> H = model.components_
fit(X, y=None, **params)[Quelle]#

Lernen Sie ein NMF-Modell für die Daten X.

Parameter:
X{array-like, sparse matrix} 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.

**paramskwargs

Parameter (Stichwortargumente) und Werte, die an die fit_transform-Instanz übergeben werden.

Gibt zurück:
selfobject

Gibt die Instanz selbst zurück.

fit_transform(X, y=None, W=None, H=None)[Quelle]#

Lernen Sie ein NMF-Modell für die Daten X und geben Sie die transformierten Daten zurück.

Dies ist effizienter als fit gefolgt von transform aufzurufen.

Parameter:
X{array-like, sparse matrix} 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.

Warray-like von Form (n_samples, n_components), default=None

Wenn init='custom', wird es als anfänglicher Schätzwert für die Lösung verwendet. Wenn None, wird die in init angegebene Initialisierungsmethode verwendet.

Harray-like von Form (n_components, n_features), default=None

Wenn init='custom', wird es als anfänglicher Schätzwert für die Lösung verwendet. Wenn None, wird die in init angegebene Initialisierungsmethode verwendet.

Gibt zurück:
Wndarray von 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.

Hinzugefügt in Version 0.18.

Parameter:
X{ndarray, sparse matrix} der Form (n_samples, n_components)

Transformierte Datenmatrix.

Gibt zurück:
X_originalndarray von der Form (n_samples, n_features)

Gibt eine Datenmatrix in der ursprünglichen Form zurück.

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]#

Transformieren Sie die Daten X gemäß dem angepassten NMF-Modell.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Trainingsvektor, wobei n_samples die Anzahl der Stichproben und n_features die Anzahl der Merkmale ist.

Gibt zurück:
Wndarray von Form (n_samples, n_components)

Transformierte Daten.