IncrementalPCA#
- класс sklearn.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)cv: int, генератор перекрестной проверки или итерируемый объект, по умолчанию=5Пример использования см. в Инкрементальный PCA.
Подробнее в Руководство пользователя.
Добавлено в версии 0.16.
- Параметры:
- n_componentsint, default=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, default=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 от Tipping и Bishop 1999. См. “Pattern Recognition and Machine Learning” от C. Bishop, 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]. Эта модель является расширением последовательного преобразования Кархунена-Лоэва из Леви и Линденбаума (2000) [2].
Мы специально воздержались от оптимизации, используемой авторами обеих статей, QR-разложения, применяемого в определённых ситуациях для снижения алгоритмической сложности SVD. Источник этой техники — Матричные вычисления (Golub и 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]Г. Голуб и К. Ван Лоан. Матричные вычисления, третье издание, Глава 5, Раздел 5.4.4, стр. 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_matrix(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), default=None
Целевые значения (None для неконтролируемых преобразований).
- **fit_paramsdict
Дополнительные параметры обучения. Передавайте только если оценщик принимает дополнительные параметры в своем
fitметод.
- Возвращает:
- X_newndarray массив формы (n_samples, n_features_new)
Преобразованный массив.
- get_covariance()[источник]#
Вычисление ковариации данных с порождающей моделью.
cov = components_.T * S**2 * components_ + sigma2 * eye(n_features)где S**2 содержит объяснённые дисперсии, а sigma2 содержит дисперсии шума.- Возвращает:
- covмассив формы=(n_features, n_features)
Оцененная ковариация данных.
- get_feature_names_out(input_features=None)[источник]#
Получить имена выходных признаков для преобразования.
Имена признаков на выходе будут иметь префикс в виде имени класса в нижнем регистре. Например, если преобразователь выводит 3 признака, то имена признаков на выходе:
["class_name0", "class_name1", "class_name2"].- Параметры:
- input_featuresarray-like из str или None, по умолчанию=None
Используется только для проверки имен признаков с именами, встреченными в
fit.
- Возвращает:
- feature_names_outndarray из str объектов
Преобразованные имена признаков.
- 6332()[источник]#
Получить маршрутизацию метаданных этого объекта.
Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.
- Возвращает:
- маршрутизацияMetadataRequest
A
MetadataRequestИнкапсуляция информации о маршрутизации.
- get_params(глубокий=True)[источник]#
Получить параметры для этого оценщика.
- Параметры:
- глубокийbool, по умолчанию=True
Если True, вернет параметры для этого оценщика и вложенных подобъектов, которые являются оценщиками.
- Возвращает:
- paramsdict
Имена параметров, сопоставленные с их значениями.
- get_precision()[источник]#
Вычислить матрицу точности данных с генеративной моделью.
Равен обратной ковариационной матрице, но вычислен с использованием леммы обращения матрицы для эффективности.
- Возвращает:
- точностьмассив, shape=(n_features, n_features)
Оцененная точность данных.
- inverse_transform(X)[источник]#
Преобразование данных обратно в исходное пространство.
Другими словами, вернуть входные данные
X_originalчей transform будет 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(*, преобразовать=None)[источник]#
Установить контейнер вывода.
См. Введение API set_output для примера использования API.
- Параметры:
- преобразовать{“default”, “pandas”, “polars”}, по умолчанию=None
Настройка вывода
transformиfit_transform."default": Формат вывода трансформера по умолчанию"pandas": DataFrame вывод"polars": Вывод PolarsNone: Конфигурация преобразования не изменена
Добавлено в версии 1.4:
"polars"опция была добавлена.
- Возвращает:
- selfэкземпляр estimator
Экземпляр оценщика.
- set_params(**params)[источник]#
Установить параметры этого оценщика.
Метод работает как на простых оценщиках, так и на вложенных объектах (таких как
Pipeline). Последние имеют параметры видачтобы можно было обновить каждый компонент вложенного объекта.__ - Параметры:
- **paramsdict
Параметры оценщика.
- Возвращает:
- selfэкземпляр estimator
Экземпляр оценщика.
- преобразовать(X)[источник]#
Применить уменьшение размерности к X.
X проецируется на первые главные компоненты, ранее извлеченные из обучающего набора, используя мини-пакеты размера batch_size, если X разрежен.
- Параметры:
- 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)