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.textzurü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.ToderX.T * Xverwendet, 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_svdfü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_svdfü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_componentsVariablen 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
XMerkmalnamen hat, die alle Zeichenketten sind.Hinzugefügt in Version 1.0.
Siehe auch
DictionaryLearningFindet ein Dictionary, das Daten spärlich kodiert.
FactorAnalysisEin einfaches lineares generatives Modell mit Gaußschen latenten Variablen.
IncrementalPCAInkrementelle Hauptkomponentenanalyse.
KernelPCAKernel-Hauptkomponentenanalyse.
NMFNicht-negative Matrixfaktorisierung.
PCAHauptkomponentenanalyse.
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
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
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]#
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
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.
Galeriebeispiele#
Hashing-Merkmals-Transformation mit Totally Random Trees
Manifold Learning auf handschriftlichen Ziffern: Locally Linear Embedding, Isomap…