Примечание
Перейти в конец, чтобы скачать полный код примера или запустить этот пример в браузере с помощью JupyterLite или Binder.
Инкрементальный PCA
Инкрементальный анализ главных компонент (IPCA) обычно используют вместо анализа главных компонент (PCA), когда набор данных, который требуется разложить, слишком велик для размещения в памяти. IPCA строит низкоранговое приближение входных данных, используя объем памяти, не зависящий от количества входных образцов. Он по-прежнему зависит от признаков входных данных, однако изменение размера пакета позволяет контролировать использование памяти.
Этот пример наглядно показывает, что IPCA способен находить проекцию данных, похожую на проекцию PCA (с точностью до смены знака), обрабатывая при этом лишь несколько образцов за раз. Это можно считать «игрушечным примером», поскольку IPCA предназначен для больших наборов данных, которые не помещаются в оперативную память и требуют инкрементального подхода.
# 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 секунды)
Связанные примеры
© 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

