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][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