Инкрементальный PCA#

Инкрементальный анализ главных компонент (IPCA) обычно используется как замена анализа главных компонент (PCA), когда набор данных для разложения слишком велик, чтобы поместиться в память. IPCA строит низкоранговое приближение для входных данных, используя объём памяти, не зависящий от количества входных образцов данных. Он всё ещё зависит от признаков входных данных, но изменение размера пакета позволяет контролировать использование памяти.

Этот пример служит визуальной проверкой того, что IPCA способен найти схожую проекцию данных с PCA (с точностью до знака), обрабатывая только несколько образцов за раз. Это можно считать "игрушечным примером", так как IPCA предназначен для больших наборов данных, которые не помещаются в оперативную память, требуя инкрементальных подходов.

  • 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()

Общее время выполнения скрипта: (0 минут 0.198 секунд)

Связанные примеры

Анализ главных компонент (PCA) на наборе данных Iris

Анализ главных компонент (PCA) на наборе данных Iris

Сравнение LDA и PCA 2D проекции набора данных Iris

Сравнение LDA и PCA 2D проекции набора данных Iris

Построить поверхность решений деревьев решений, обученных на наборе данных ирисов

Построить поверхность решений деревьев решений, обученных на наборе данных ирисов

Построение многоклассового SGD на наборе данных iris

Построение многоклассового SGD на наборе данных iris

Галерея, созданная Sphinx-Gallery