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 werden n_samples / batch_size SVD-Berechnungen durchgeführt, um die Hauptkomponenten zu erhalten, verglichen mit einer großen SVD mit einer Komplexität von O(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_components None ist, wird n_components auf min(n_samples, n_features) gesetzt.

whitenbool, Standard=False

Wenn True (Standardmäßig False), werden die components_ Vektoren durch n_samples mal components_ 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=False kann 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 fit verwendet. Wenn batch_size None ist, wird batch_size aus den Daten abgeleitet und auf 5 * n_features gesetzt, 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_components Variablen 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 X Merkmalnamen hat, die alle Zeichenketten sind.

Hinzugefügt in Version 1.0.

Siehe auch

PCA

Hauptkomponentenanalyse (PCA).

KernelPCA

Kernel Hauptkomponentenanalyse (KPCA).

SparsePCA

Sparse Principal Components Analysis (SparsePCA).

TruncatedSVD

Dimensionsreduktion 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

[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_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.

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 X und y mit optionalen Parametern fit_params an und gibt eine transformierte Version von X zurü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 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.

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_original zurück, dessen Transformation X wäre.

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

Neue Daten, wobei n_samples die Anzahl der Stichproben und n_components die Anzahl der Komponenten ist.

Gibt zurück:
X_originalarray-ähnlich der Form (n_samples, n_features)

Ursprüngliche Daten, wobei n_samples die Anzahl der Stichproben und n_features die 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_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.

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

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_samples die Anzahl der Stichproben und n_features die 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)