Spec-Zone.ru › scikit-learn

Примечание

Перейти в конец, чтобы скачать полный код примера или запустить этот пример в браузере с помощью JupyterLite или Binder.

Инкрементальный 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.207 секунды)

Launch binder
Launch JupyterLite

Download Jupyter notebook: plot_incremental_pca.ipynb

Download Python source code: plot_incremental_pca.py

Download zipped: plot_incremental_pca.zip

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

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

Сравнение двумерных проекций набора данных Iris с помощью LDA и PCA

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

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

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/auto_examples/decomposition/plot_incremental_pca.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API