TruncatedSVD#

class sklearn.decomposition.TruncatedSVD(n_components=2, *, algorithm='randomized', n_iter=5, n_oversamples=10, power_iteration_normalizer='auto', random_state=None, tol=0.0)[source]#

Dimensionsreduktion mittels tronierter SVD (auch bekannt als LSA).

Dieser Transformator führt eine lineare Dimensionsreduktion mittels abgeschnittenem singulärem Zerlegungswert (SVD) durch. Im Gegensatz zu PCA zentriert dieser Schätzer die Daten nicht, bevor die singuläre Zerlegung berechnet wird. Das bedeutet, er kann effizient mit dünnbesetzten Matrizen arbeiten.

Insbesondere funktioniert die abgeschnittene SVD auf Termzähl-/tf-idf-Matrizen, wie sie von den Vektorisierern in sklearn.feature_extraction.text zurückgegeben werden. In diesem Kontext ist sie als latente semantische Analyse (LSA) bekannt.

Dieser Schätzer unterstützt zwei Algorithmen: einen schnellen zufälligen SVD-Löser und einen „naiven“ Algorithmus, der ARPACK als Eigenwertlöser auf X * X.T oder X.T * X verwendet, je nachdem, was effizienter ist.

Mehr dazu im Benutzerhandbuch.

Parameter:
n_componentsint, Standard=2

Gewünschte Dimensionalität der Ausgabedaten. Wenn algorithm='arpack', muss sie strikt kleiner als die Anzahl der Merkmale sein. Wenn algorithm='randomized', muss sie kleiner oder gleich der Anzahl der Merkmale sein. Der Standardwert ist für die Visualisierung nützlich. Für LSA wird ein Wert von 100 empfohlen.

algorithm{‘arpack’, ‘randomized’}, default=’randomized’

SVD-Löser, der verwendet werden soll. Entweder „arpack“ für den ARPACK-Wrapper in SciPy (scipy.sparse.linalg.svds) oder „randomized“ für den zufälligen Algorithmus von Halko (2009).

n_iterint, default=5

Anzahl der Iterationen für den zufälligen SVD-Löser. Wird von ARPACK nicht verwendet. Der Standardwert ist größer als der Standardwert in randomized_svd, um dünnbesetzte Matrizen zu handhaben, die ein großes, langsam abfallendes Spektrum aufweisen können.

n_oversamplesint, Standard=10

Anzahl der Übersampelungen für den zufälligen SVD-Löser. Wird von ARPACK nicht verwendet. Siehe randomized_svd für eine vollständige Beschreibung.

Hinzugefügt in Version 1.1.

power_iteration_normalizer{‘auto’, ‘QR’, ‘LU’, ‘none’}, Standard=’auto’

Power-Iteration-Normalisierer für den zufälligen SVD-Löser. Wird von ARPACK nicht verwendet. Siehe randomized_svd für weitere Details.

Hinzugefügt in Version 1.1.

random_stateint, RandomState-Instanz oder None, default=None

Wird während der zufälligen SVD verwendet. Geben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg an. Siehe Glossar.

tolfloat, default=0.0

Toleranz für ARPACK. 0 bedeutet Maschinengenauigkeit. Wird vom zufälligen SVD-Löser ignoriert.

Attribute:
components_ndarray der Form (n_components, n_features)

Die rechten singulären Vektoren der Eingabedaten.

explained_variance_ndarray der Form (n_components,)

Die Varianz der Trainingsstichproben, transformiert durch eine Projektion auf jede Komponente.

explained_variance_ratio_ndarray der Form (n_components,)

Prozentsatz der von jeder der ausgewählten Komponenten erklärten Varianz.

singular_values_ndarray der Form (n_components,)

Die Singulärwerte, die jeder der ausgewählten Komponenten entsprechen. Die Singulärwerte sind gleich den 2-Normen der n_components Variablen im niederdimensionalen Raum.

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.

FactorAnalysis

Ein einfaches lineares generatives Modell mit Gaußschen latenten Variablen.

IncrementalPCA

Inkrementelle Hauptkomponentenanalyse.

KernelPCA

Kernel-Hauptkomponentenanalyse.

NMF

Nicht-negative Matrixfaktorisierung.

PCA

Hauptkomponentenanalyse.

Anmerkungen

SVD leidet unter einem Problem namens „Vorzeichenunbestimmtheit“, was bedeutet, dass das Vorzeichen der components_ und die Ausgabe von `transform` vom Algorithmus und dem Zufallszustand abhängen. Um dies zu umgehen, fitten Sie Instanzen dieser Klasse einmal an Daten und behalten Sie die Instanz, um Transformationen durchzuführen.

Referenzen

Halko, et al. (2009). „Finding structure with randomness: Stochastic algorithms for constructing approximate matrix decompositions“

Beispiele

>>> from sklearn.decomposition import TruncatedSVD
>>> from scipy.sparse import csr_matrix
>>> import numpy as np
>>> np.random.seed(0)
>>> X_dense = np.random.rand(100, 100)
>>> X_dense[:, 2 * np.arange(50)] = 0
>>> X = csr_matrix(X_dense)
>>> svd = TruncatedSVD(n_components=5, n_iter=7, random_state=42)
>>> svd.fit(X)
TruncatedSVD(n_components=5, n_iter=7, random_state=42)
>>> print(svd.explained_variance_ratio_)
[0.0157 0.0512 0.0499 0.0479 0.0453]
>>> print(svd.explained_variance_ratio_.sum())
0.2102
>>> print(svd.singular_values_)
[35.2410  4.5981   4.5420  4.4486  4.3288]
fit(X, y=None)[source]#

Modell an Trainingsdaten X fitten.

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

Trainingsdaten.

yIgnoriert

Nicht verwendet, hier zur API-Konsistenz durch Konvention vorhanden.

Gibt zurück:
selfobject

Gibt das Transformer-Objekt zurück.

fit_transform(X, y=None)[source]#

Modell an X fitten und Dimensionsreduktion auf X durchführen.

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

Trainingsdaten.

yIgnoriert

Nicht verwendet, hier zur API-Konsistenz durch Konvention vorhanden.

Gibt zurück:
X_newndarray der Form (n_samples, n_components)

Reduzierte Version von X. Dies ist immer ein dichtes 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 fit gesehenen 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]#

X zurück in seinen ursprünglichen Raum transformieren.

Gibt ein Array X_original zurück, dessen Transformation X wäre.

Parameter:
Xarray-ähnlich von der Form (n_samples, n_components)

Neue Daten.

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

Beachten Sie, dass dies immer ein dichtes Array ist.

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

Dimensionsreduktion auf X durchführen.

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

Neue Daten.

Gibt zurück:
X_newndarray der Form (n_samples, n_components)

Reduzierte Version von X. Dies ist immer ein dichtes Array.