Spec-Zone.ru › scikit-learn

IncrementalPCA

classsklearn.decomposition.IncrementalPCA(n_components=None, *, whiten=False, copy=True, batch_size=None)[источник]

Инкрементальный анализ главных компонент (IPCA).

Линейное понижение размерности с использованием сингулярного разложения данных с сохранением только наиболее значимых сингулярных векторов для проецирования данных в пространство меньшей размерности. Перед применением SVD входные данные центрируются, но не масштабируются по каждому признаку.

В зависимости от размера входных данных этот алгоритм может быть значительно эффективнее PCA с точки зрения использования памяти и поддерживает разреженные входные данные.

Алгоритм имеет постоянную сложность по памяти порядка batch_size * n_features, что позволяет использовать файлы np.memmap без загрузки всего файла в память. Для разреженных матриц входные данные преобразуются в плотные пакетами (чтобы можно было вычесть среднее), что позволяет не хранить всю плотную матрицу одновременно.

Вычислительные затраты на каждое SVD составляют O(batch_size * n_features ** 2), но в каждый момент времени в памяти остаются только 2 * batch_size образцов. Для получения главных компонент потребуется n_samples / batch_size вычислений SVD вместо одного большого SVD сложности O(n_samples * n_features ** 2) для PCA.

Пример использования см. в разделе Инкрементальный анализ главных компонент.

Подробнее см. в руководстве пользователя.

Добавлено в версии 0.16.

Параметры:
n_componentsint, по умолчанию=None

Количество сохраняемых компонент. Если n_components равно None, то n_components устанавливается в min(n_samples, n_features).

whitenbool, по умолчанию=False

Если True (по умолчанию False), векторы components_ делятся на n_samples, умноженное на components_, чтобы обеспечить некоррелированные выходные данные с единичными дисперсиями по компонентам.

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

copybool, по умолчанию=True

Если False, X будет перезаписан. copy=False можно использовать для экономии памяти, но это небезопасно в общем случае.

batch_sizeint, по умолчанию=None

Количество образцов в каждом пакете. Используется только при вызове fit. Если batch_size равно None, значение batch_size определяется по данным и устанавливается в 5 * n_features, обеспечивая баланс между точностью аппроксимации и потреблением памяти.

Атрибуты:
components_ndarray формы (n_components, n_features)

Главные оси в пространстве признаков, представляющие направления максимальной дисперсии данных. Эквивалентны правым сингулярным векторам центрированных входных данных и параллельны их собственным векторам. Компоненты отсортированы по убыванию explained_variance_.

explained_variance_ndarray формы (n_components,)

Дисперсия, объясняемая каждой из выбранных компонент.

explained_variance_ratio_ndarray формы (n_components,)

Доля дисперсии, объясняемая каждой из выбранных компонент. Если сохранены все компоненты, сумма объяснённых дисперсий равна 1.0.

singular_values_ndarray формы (n_components,)

Сингулярные значения, соответствующие каждой из выбранных компонент. Сингулярные значения равны нормам 2 переменных n_components в пространстве меньшей размерности.

mean_ndarray формы (n_features,)

Эмпирическое среднее по каждому признаку, агрегированное по вызовам partial_fit.

var_ndarray формы (n_features,)

Эмпирическая дисперсия по каждому признаку, агрегированная по вызовам partial_fit.

noise_variance_float

Оценённая ковариация шума в соответствии с моделью вероятностного PCA Типпинга и Бишопа (1999). См. «Распознавание образов и машинное обучение» К. Бишопа, 12.2.1, с. 574 или http://www.miketipping.com/papers/met-mppca.pdf.

n_components_int

Оценённое количество компонент. Используется, когда n_components=None.

n_samples_seen_int

Количество образцов, обработанных оценивателем. Сбрасывается при новых вызовах fit, но увеличивается при вызовах partial_fit.

batch_size_int

Размер пакета, определённый на основе batch_size.

n_features_in_int

Количество признаков, обнаруженных во время fit.

Добавлено в версии 0.24.

feature_names_in_ndarray формы (n_features_in_,)

Названия признаков, обнаруженных во время fit. Определяется только в том случае, если X содержит названия признаков, представленные строками.

Добавлено в версии 1.0.

См. также

PCA

Анализ главных компонент (PCA).

KernelPCA

Ядерный анализ главных компонент (KPCA).

SparsePCA

Разреженный анализ главных компонент (SparsePCA).

TruncatedSVD

Понижение размерности с использованием усечённого SVD.

Примечания

Реализует модель инкрементального PCA из работы Ross et al. (2008) [1]. Эта модель является расширением последовательного преобразования Карунена — Лоэва из работы Levy и Lindenbaum (2000) [2].

Мы намеренно не стали использовать оптимизацию, применённую авторами обеих статей: разложение QR, которое в определённых ситуациях позволяет снизить вычислительную сложность SVD. Источник этого метода — Matrix Computations (Golub and Van Loan 1997 [3]). Этот метод не включён, поскольку он эффективен только при разложении матрицы с n_samples (строк) >= 5/3 * n_features (столбцов) и ухудшает читаемость реализованного алгоритма. Это могло бы стать хорошей возможностью для будущей оптимизации, если она будет признана необходимой.

Ссылки

[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

[2]

A. Levy and M. Lindenbaum, Sequential Karhunen-Loeve Basis Extraction and its Application to Images, IEEE Transactions on Image Processing, Volume 9, Number 8, pp. 1371-1374, August 2000.

[3]

G. Golub and C. Van Loan. Matrix Computations, Third Edition, Chapter 5, Section 5.4.4, pp. 252-253, 1997.

Примеры

>>> 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_array(X)
>>> X_transformed = transformer.fit_transform(X_sparse)
>>> X_transformed.shape
(1797, 7)
fit(X, y=None)[источник]

Обучить модель на X, используя мини-пакеты размера batch_size.

Параметры:
X{array-like, sparse matrix} формы (n_samples, n_features)

Обучающие данные, где n_samples — количество образцов, а n_features — количество признаков.

yИгнорируется

Не используется; присутствует по соглашению для согласованности API.

Возвращает:
selfobject

Возвращает сам экземпляр.

fit_transform(X, y=None, **fit_params)[источник]

Обучить на данных, а затем преобразовать их.

Обучает преобразователь на X и y с необязательными параметрами fit_params и возвращает преобразованную версию X.

Параметры:
Xarray-like формы (n_samples, n_features)

Входные образцы.

yarray-like формы (n_samples,) или (n_samples, n_outputs), по умолчанию=None

Целевые значения (None для преобразований без учителя).

**fit_paramsdict

Дополнительные параметры обучения. Передавайте их только в том случае, если оцениватель принимает дополнительные параметры в методе fit.

Возвращает:
X_newndarray array формы (n_samples, n_features_new)

Преобразованный массив.

get_covariance()[источник]

Вычислить ковариацию данных с помощью порождающей модели.

cov = components_.T * S**2 * components_ + sigma2 * eye(n_features) где S**2 содержит объяснённые дисперсии, а sigma2 — дисперсии шума.

Возвращает:
covarray формы=(n_features, n_features)

Оценённая ковариация данных.

get_feature_names_out(input_features=None)[источник]

Получить названия выходных признаков для преобразования.

К названиям выходных признаков будет добавлено имя класса в нижнем регистре. Например, если преобразователь выдаёт 3 признака, их названия будут следующими: ["class_name0", "class_name1", "class_name2"].

Параметры:
input_featuresarray-like строк или None, по умолчанию=None

Используется только для проверки названий признаков на соответствие названиям, обнаруженным в fit.

Возвращает:
feature_names_outndarray объектов str

Названия преобразованных признаков.

get_metadata_routing()[источник]

Получить настройки маршрутизации метаданных этого объекта.

О том, как работает механизм маршрутизации, см. руководство пользователя.

Возвращает:
routingMetadataRequest

Объект MetadataRequest, содержащий информацию о маршрутизации.

get_params(deep=True)[источник]

Получить параметры этого оценивателя.

Параметры:
deepbool, по умолчанию=True

Если True, возвращает параметры этого оценивателя и содержащихся в нём подобъектов, являющихся оценивателями.

Возвращает:
paramsdict

Названия параметров, сопоставленные их значениям.

get_precision()[источник]

Вычислить матрицу точности данных с помощью порождающей модели.

Равна обратной ковариационной матрице, но вычисляется с помощью леммы об обращении матриц для повышения эффективности.

Возвращает:
precisionarray, shape=(n_features, n_features)

Оценённая точность данных.

inverse_transform(X)[источник]

Преобразовать данные обратно в исходное пространство.

Иными словами, вернуть входные данные X_original, преобразование которых даст X.

Параметры:
Xarray-like формы (n_samples, n_components)

Новые данные, где n_samples — количество образцов, а n_components — количество компонент.

Возвращает:
X_originalarray-like формы (n_samples, n_features)

Исходные данные, где n_samples — количество образцов, а n_features — количество признаков.

Примечания

Если отбеливание включено, inverse_transform выполнит точную обратную операцию, включая отмену отбеливания.

partial_fit(X, y=None, check_input=True)[источник]

Инкрементально обучить модель на X. Все данные X обрабатываются как один пакет.

Параметры:
Xarray-like формы (n_samples, n_features)

Обучающие данные, где n_samples — количество образцов, а n_features — количество признаков.

yИгнорируется

Не используется; присутствует по соглашению для согласованности API.

check_inputbool, по умолчанию=True

Выполнить check_array для X.

Возвращает:
selfobject

Возвращает сам экземпляр.

set_output(*, transform=None)[источник]

Задать контейнер выходных данных.

Подробнее см. в руководстве пользователя, а пример использования API см. в разделе Знакомство с API set_output.

Параметры:
transform{“default”, “pandas”, “polars”}, по умолчанию=None

Настроить формат выходных данных для transform и fit_transform.

  • "default": Формат выходных данных преобразователя по умолчанию
  • "pandas": Выходные данные в формате DataFrame
  • "polars": Выходные данные в формате Polars
  • None: Конфигурация преобразования не меняется

Добавлено в версии 1.4: Добавлен параметр "polars".

Возвращает:
selfэкземпляр оценивателя

Экземпляр оценивателя.

set_params(**params)[источник]

Задать параметры этого оценивателя.

Метод работает как с простыми оценивателями, так и с вложенными объектами (например, Pipeline). Параметры последних имеют вид <component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.

Параметры:
**paramsdict

Параметры оценивателя.

Возвращает:
selfэкземпляр оценивателя

Экземпляр оценивателя.

transform(X)[источник]

Применить понижение размерности к X.

X проецируется на первые главные компоненты, ранее извлечённые из обучающей выборки. Если X является разреженной матрицей, используются мини-пакеты размера batch_size.

Параметры:
X{array-like, sparse matrix} формы (n_samples, n_features)

Новые данные, где n_samples — количество образцов, а n_features — количество признаков.

Возвращает:
X_newndarray формы (n_samples, n_components)

Проекция X на первые главные компоненты.

Примеры

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

Примеры в галерее

Инкрементальный анализ главных компонент

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

Spec-Zone.ru

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