Inkrementelle PCA#

Die inkrementelle Hauptkomponentenanalyse (IPCA) wird typischerweise als Ersatz für die Hauptkomponentenanalyse (PCA) verwendet, wenn der zu zerlegende Datensatz zu groß ist, um in den Speicher zu passen. IPCA erstellt eine niedrigrangige Approximation für die Eingabedaten unter Verwendung einer Speichermenge, die unabhängig von der Anzahl der Eingabedatensamples ist. Sie ist immer noch abhängig von den Merkmalen der Eingabedaten, aber die Änderung der Batch-Größe ermöglicht die Kontrolle des Speicherverbrauchs.

Dieses Beispiel dient als visueller Check, dass IPCA in der Lage ist, eine ähnliche Projektion der Daten wie PCA zu finden (bis auf eine Vorzeichenumkehr), während nur wenige Samples gleichzeitig verarbeitet werden. Dies kann als „Spielzeugbeispiel“ betrachtet werden, da IPCA für große Datensätze gedacht ist, die nicht in den Hauptspeicher passen und inkrementelle Ansätze erfordern.

  • Incremental PCA of iris dataset Mean absolute unsigned error 0.002201
  • PCA of iris dataset
# Authors: The scikit-learn developers
# SPDX-License-Identifier: BSD-3-Clause

import matplotlib.pyplot as plt
import numpy as np

from sklearn.datasets import load_iris
from sklearn.decomposition import PCA, IncrementalPCA

iris = load_iris()
X = iris.data
y = iris.target

n_components = 2
ipca = IncrementalPCA(n_components=n_components, batch_size=10)
X_ipca = ipca.fit_transform(X)

pca = PCA(n_components=n_components)
X_pca = pca.fit_transform(X)

colors = ["navy", "turquoise", "darkorange"]

for X_transformed, title in [(X_ipca, "Incremental PCA"), (X_pca, "PCA")]:
    plt.figure(figsize=(8, 8))
    for color, i, target_name in zip(colors, [0, 1, 2], iris.target_names):
        plt.scatter(
            X_transformed[y == i, 0],
            X_transformed[y == i, 1],
            color=color,
            lw=2,
            label=target_name,
        )

    if "Incremental" in title:
        err = np.abs(np.abs(X_pca) - np.abs(X_ipca)).mean()
        plt.title(title + " of iris dataset\nMean absolute unsigned error %.6f" % err)
    else:
        plt.title(title + " of iris dataset")
    plt.legend(loc="best", shadow=False, scatterpoints=1)
    plt.axis([-4, 4, -1.5, 1.5])

plt.show()

Gesamtlaufzeit des Skripts: (0 Minuten 0,199 Sekunden)

Verwandte Beispiele

Principal Component Analysis (PCA) auf dem Iris-Datensatz

Principal Component Analysis (PCA) auf dem Iris-Datensatz

Vergleich von LDA und PCA 2D-Projektion des Iris-Datensatzes

Vergleich von LDA und PCA 2D-Projektion des Iris-Datensatzes

Entscheidungsfläche von Entscheidungsbäumen, trainiert auf dem Iris-Datensatz, plotten

Entscheidungsfläche von Entscheidungsbäumen, trainiert auf dem Iris-Datensatz, plotten

Multi-Klassen SGD auf dem Iris-Datensatz plotten

Multi-Klassen SGD auf dem Iris-Datensatz plotten

Galerie generiert von Sphinx-Gallery