IncrementalPCA#
- class sklearn.decomposition.IncrementalPCA(n_components=None, *, whiten=False, copy=True, batch_size=None)[Quelle]#
Inkrementelle Hauptkomponentenanalyse (IPCA).
Lineare Dimensionsreduktion mittels Singulärwertzerlegung (SVD) der Daten, wobei nur die signifikantesten singulären Vektoren zur Projektion der Daten in einen niederdimensionalen Raum beibehalten werden. Die Eingabedaten werden vor der Anwendung der SVD für jedes Merkmal zentriert, aber nicht skaliert.
Abhängig von der Größe der Eingabedaten kann dieser Algorithmus speichereffizienter sein als PCA und ermöglicht spärliche Eingaben.
Dieser Algorithmus hat eine konstante Speicherkomplexität in der Größenordnung von
batch_size * n_features, was die Verwendung von np.memmap-Dateien ohne vollständiges Laden der Datei in den Speicher ermöglicht. Bei spärlichen Matrizen werden die Eingaben in Stapeln in dichte Daten umgewandelt (um den Mittelwert subtrahieren zu können), was zu keinem Zeitpunkt die Speicherung der gesamten dichten Matrix erfordert.Der Rechenaufwand jeder SVD beträgt
O(batch_size * n_features ** 2), wobei jedoch nur 2 * batch_size Stichproben gleichzeitig im Speicher verbleiben. Es werdenn_samples / batch_sizeSVD-Berechnungen durchgeführt, um die Hauptkomponenten zu erhalten, verglichen mit einer großen SVD mit einer Komplexität vonO(n_samples * n_features ** 2)für PCA.Ein Anwendungsbeispiel finden Sie unter Inkrementelle PCA.
Lesen Sie mehr im Benutzerhandbuch.
Hinzugefügt in Version 0.16.
- Parameter:
- n_componentsint, default=None
Anzahl der zu behaltenden Komponenten. Wenn
n_componentsNoneist, wirdn_componentsaufmin(n_samples, n_features)gesetzt.- whitenbool, Standard=False
Wenn True (Standardmäßig False), werden die
components_Vektoren durchn_samplesmalcomponents_geteilt, um unkorrelierte Ausgaben mit Einheitsvarianzen pro Komponente sicherzustellen.Whitening entfernt einige Informationen aus dem transformierten Signal (die relativen Varianzskalen der Komponenten), kann aber manchmal die Vorhersagegenauigkeit nachgeschalteter Schätzer verbessern, indem Daten einigen festen Annahmen entsprechen.
- copybool, Standard=True
Wenn False, wird X überschrieben.
copy=Falsekann verwendet werden, um Speicher zu sparen, ist aber für den allgemeinen Gebrauch unsicher.- batch_sizeint, Standard=None
Die Anzahl der Stichproben, die für jeden Stapel verwendet werden. Wird nur beim Aufruf von
fitverwendet. Wennbatch_sizeNoneist, wirdbatch_sizeaus den Daten abgeleitet und auf5 * n_featuresgesetzt, um ein Gleichgewicht zwischen Näherungsgenauigkeit und Speicherverbrauch zu schaffen.
- Attribute:
- components_ndarray der Form (n_components, n_features)
Hauptachsen im Merkmalsraum, die die Richtungen maximaler Varianz in den Daten darstellen. Entsprechend die rechten singulären Vektoren der zentrierten Eingabedaten, parallel zu ihren Eigenvektoren. Die Komponenten sind nach abnehmender
explained_variance_sortiert.- explained_variance_ndarray der Form (n_components,)
Von jeder der ausgewählten Komponenten erklärte Varianz.
- explained_variance_ratio_ndarray der Form (n_components,)
Prozentsatz der von jeder der ausgewählten Komponenten erklärten Varianz. Wenn alle Komponenten gespeichert werden, ist die Summe der erklärten Varianzen gleich 1,0.
- 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.- mean_ndarray der Form (n_features,)
Empirischer Mittelwert pro Merkmal, aggregiert über Aufrufe von
partial_fit.- var_ndarray der Form (n_features,)
Empirische Varianz pro Merkmal, aggregiert über Aufrufe von
partial_fit.- noise_variance_float
Die geschätzte Rauschkovarianz nach dem probabilistischen PCA-Modell von Tipping und Bishop 1999. Siehe „Pattern Recognition and Machine Learning“ von C. Bishop, 12.2.1 S. 574 oder http://www.miketipping.com/papers/met-mppca.pdf.
- n_components_int
Die geschätzte Anzahl der Komponenten. Relevant, wenn
n_components=None.- n_samples_seen_int
Die Anzahl der vom Schätzer verarbeiteten Stichproben. Wird bei neuen Aufrufen von fit zurückgesetzt, inkrementiert aber über
partial_fit-Aufrufe.- batch_size_int
Abgeleitete Stapelgröße aus
batch_size.- 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
PCAHauptkomponentenanalyse (PCA).
KernelPCAKernel Hauptkomponentenanalyse (KPCA).
SparsePCASparse Principal Components Analysis (SparsePCA).
TruncatedSVDDimensionsreduktion mittels abgeschnittener SVD.
Anmerkungen
Implementiert das inkrementelle PCA-Modell von Ross et al. (2008) [1]. Dieses Modell ist eine Erweiterung der Sequential Karhunen-Loeve Transform von Levy und Lindenbaum (2000) [2].
Wir haben bewusst auf eine Optimierung verzichtet, die von den Autoren beider Arbeiten verwendet wird, eine QR-Zerlegung, die in bestimmten Situationen zur Reduzierung der algorithmischen Komplexität der SVD eingesetzt wird. Die Quelle für diese Technik ist Matrix Computations (Golub und Van Loan 1997 [3]). Diese Technik wurde weggelassen, da sie nur vorteilhaft ist, wenn eine Matrix mit
n_samples(Zeilen) >= 5/3 *n_features(Spalten) zerlegt wird, und sie die Lesbarkeit des implementierten Algorithmus beeinträchtigt. Dies wäre eine gute Gelegenheit für zukünftige Optimierungen, falls dies als notwendig erachtet wird.Referenzen
[1]D. Ross, J. Lim, R. Lin, M. Yang. Incremental Learning for Robust Visual Tracking, International Journal of Computer Vision, Volume 77, Issue 1-3, pp. 125-141, May 2008. https://www.cs.toronto.edu/~dross/ivt/RossLimLinYang_ijcv.pdf
[2][3]G. Golub und C. Van Loan. Matrix Computations, Third Edition, Chapter 5, Section 5.4.4, pp. 252-253, 1997.
Beispiele
>>> from sklearn.datasets import load_digits >>> from sklearn.decomposition import IncrementalPCA >>> from scipy import sparse >>> X, _ = load_digits(return_X_y=True) >>> transformer = IncrementalPCA(n_components=7, batch_size=200) >>> # either partially fit on smaller batches of data >>> transformer.partial_fit(X[:100, :]) IncrementalPCA(batch_size=200, n_components=7) >>> # or let the fit function itself divide the data into batches >>> X_sparse = sparse.csr_matrix(X) >>> X_transformed = transformer.fit_transform(X_sparse) >>> X_transformed.shape (1797, 7)
- fit(X, y=None)[Quelle]#
Passt das Modell an X an, unter Verwendung von Minibatches der Größe batch_size.
- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features)
Trainingsdaten, 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)[Quelle]#
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_covariance()[Quelle]#
Berechnet die Datenkovarianz mit dem generativen Modell.
cov = components_.T * S**2 * components_ + sigma2 * eye(n_features)wobei S**2 die erklärten Varianzen und sigma2 die Rauschvarianzen enthält.- Gibt zurück:
- covarray der Form (n_features, n_features)
Geschätzte Kovarianz der 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
fitgesehenen 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.
- get_precision()[Quelle]#
Berechnet die Datenpräzisionsmatrix mit dem generativen Modell.
Gleich der Inversen der Kovarianz, aber zur Effizienz mit dem Matrix-Inversions-Lemma berechnet.
- Gibt zurück:
- precisionarray, Form (n_features, n_features)
Geschätzte Präzision der Daten.
- inverse_transform(X)[Quelle]#
Daten zurück in ihren ursprünglichen Raum transformieren.
Mit anderen Worten, geben Sie ein Eingabe-
X_originalzurück, dessen Transformation X wäre.- Parameter:
- Xarray-ähnlich von der Form (n_samples, n_components)
Neue Daten, wobei
n_samplesdie Anzahl der Stichproben undn_componentsdie Anzahl der Komponenten ist.
- Gibt zurück:
- X_originalarray-ähnlich der Form (n_samples, n_features)
Ursprüngliche Daten, wobei
n_samplesdie Anzahl der Stichproben undn_featuresdie Anzahl der Merkmale ist.
Anmerkungen
Wenn Whitening aktiviert ist, berechnet inverse_transform die exakte inverse Operation, die das Umkehren des Whitening einschließt.
- partial_fit(X, y=None, check_input=True)[Quelle]#
Inkrementelles Anpassen mit X. Alle X werden als ein einziger Stapel verarbeitet.
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Trainingsdaten, 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.
- check_inputbool, Standardwert=True
Führt check_array auf X aus.
- Gibt zurück:
- selfobject
Gibt die Instanz selbst 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
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)[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]#
Wendet Dimensionsreduktion auf X an.
X wird auf die ersten Hauptkomponenten projiziert, die zuvor aus einem Trainingssatz extrahiert wurden, unter Verwendung von Minibatches der Größe batch_size, wenn X spärlich ist.
- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features)
Neue Daten, wobei
n_samplesdie Anzahl der Stichproben undn_featuresdie Anzahl der Merkmale ist.
- Gibt zurück:
- X_newndarray der Form (n_samples, n_components)
Projektion von X in die ersten Hauptkomponenten.
Beispiele
>>> import numpy as np >>> from sklearn.decomposition import IncrementalPCA >>> X = np.array([[-1, -1], [-2, -1], [-3, -2], ... [1, 1], [2, 1], [3, 2]]) >>> ipca = IncrementalPCA(n_components=2, batch_size=3) >>> ipca.fit(X) IncrementalPCA(batch_size=3, n_components=2) >>> ipca.transform(X)