PCA
- classsklearn.decomposition.PCA(n_components=None, *, copy=True, whiten=False, svd_solver='auto', tol=0.0, iterated_power='auto', n_oversamples=10, power_iteration_normalizer='auto', random_state=None)[source]
-
Главный компонентный анализ (PCA).
Линейное уменьшение размерности с использованием разложения по единственным значениям данных для их проекции на пространство меньшей размерности. Входные данные центрируются, но не масштабируются для каждого признака перед применением SVD.
Использует реализацию LAPACK полного SVD или случайного усеченного SVD методом Халко и др. 2009 в зависимости от формы входных данных и количества извлекаемых компонентов.
При использовании разреженных входных данных может быть использована реализация ARPACK усечённого SVD (т.е. через
scipy.sparse.linalg.svds). В качестве альтернативы можно рассмотретьTruncatedSVD, где данные не центрируются.Обратите внимание, что этот класс поддерживает разреженные входные данные только для некоторых решателей, таких как «arpack» и «covariance_eigh». См.
TruncatedSVDдля альтернативы с разреженными данными.Пример использования см. в Анализ главных компонент (PCA) на наборе данных Iris
Дополнительную информацию см. в Руководстве пользователя.
- Параметры:
-
- n_componentsint, float или ‘mle’, по умолчанию=None
-
Количество компонент для сохранения. Если n_components не задано, все компоненты сохраняются:
n_components == min(n_samples, n_features)
Если
n_components == 'mle'иsvd_solver == 'full', используется оценка MLE Минки для определения размерности. Использованиеn_components == 'mle'интерпретируетsvd_solver == 'auto'какsvd_solver == 'full'.Если
0 < n_components < 1иsvd_solver == 'full', выбирается количество компонент, такое что объясняемая доля дисперсии превышает процент, указанный в n_components.Если
svd_solver == 'arpack', количество компонент должно быть строго меньше минимума из n_features и n_samples.Следовательно, случай None приводит к:
n_components == min(n_samples, n_features) - 1
- copybool, по умолчанию=True
-
Если False, данные, переданные в fit, перезаписываются, и выполнение fit(X).transform(X) не даст ожидаемых результатов, используйте fit_transform(X) вместо этого.
- whitenbool, по умолчанию=False
-
Если True (по умолчанию False), векторы
components_умножаются на квадратный корень из n_samples и затем делятся на собственные значения, чтобы обеспечить некоррелированные выходные данные с единичной дисперсией по компонентам.Отбеливание удалит некоторую информацию из преобразованного сигнала (относительные масштабы дисперсии компонент), но иногда может улучшить точность предсказания последующих оценок, заставляя их данные соответствовать некоторым жестко заданным предположениям.
- svd_solver{‘auto’, ‘full’, ‘covariance_eigh’, ‘arpack’, ‘randomized’}, по умолчанию=’auto’
-
- “auto” :
-
Решатель выбирается по политике по умолчанию «auto» на основе
X.shapeиn_components: если входные данные содержат меньше 1000 признаков и более чем в 10 раз больше выборок, то используется решатель «covariance_eigh». В противном случае, если входные данные больше 500x500 и количество извлекаемых компонент меньше 80% наименьшей размерности данных, то выбирается более эффективный метод «randomized». В противном случае вычисляется точный «full» SVD и, при необходимости, усекается после этого. - “full” :
-
Выполнить точный полный SVD, вызывая стандартный решатель LAPACK через
scipy.linalg.svdи выбрать компоненты путем последующей обработки. - “covariance_eigh” :
-
Предварительно вычислить ковариационную матрицу (по центрированным данным), выполнить классическое разложение по собственным значениям на ковариационной матрице (обычно с помощью LAPACK) и выбрать компоненты путем последующей обработки. Этот решатель очень эффективен для n_samples >> n_features и малых n_features. Однако, в противном случае он не пригоден для больших n_features (требуется большая занимаемая память для материализации ковариационной матрицы). Также обратите внимание, что по сравнению с решателем «full», этот решатель эффективно удваивает число обусловленности и поэтому менее устойчив к ошибкам округления (например, на входных данных с большим диапазоном собственных значений).
- “arpack” :
-
Выполнить усеченный SVD до
n_components, вызвав решатель ARPACK черезscipy.sparse.linalg.svds. Требуется строго0 < n_components < min(X.shape). - “randomized” :
-
Выполнить рандомизированный SVD методом Халко и др.
Добавлена в версии 0.18.0.
Изменено в версии 1.5: Добавлен решатель «covariance_eigh».
- tolfloat, по умолчанию=0.0
-
Допуск для вычисления сингулярных значений, когда svd_solver == ‘arpack’. Должен быть в диапазоне [0.0, бесконечность).
Добавлена в версии 0.18.0.
- iterated_powerint или ‘auto’, по умолчанию=’auto’
-
Количество итераций для метода степени, вычисляемого при svd_solver == ‘randomized’. Должен быть в диапазоне [0, бесконечность).
Добавлена в версии 0.18.0.
- n_oversamplesint, по умолчанию=10
-
Этот параметр имеет значение только тогда, когда
svd_solver="randomized". Он соответствует дополнительному числу случайных векторов для выборки областиX, чтобы обеспечить надлежащую обусловленность. См.randomized_svdдля получения дополнительной информации.Добавлена в версии 1.1.
- power_iteration_normalizer{‘auto’, ‘QR’, ‘LU’, ‘none’}, по умолчанию=’auto’
-
Нормализатор итераций степени для рандомизированного решателя SVD. Не используется решателем ARPACK. См.
randomized_svdдля получения дополнительной информации.Добавлена в версии 1.1.
- random_stateint, RandomState instance или None, по умолчанию=None
-
Используется при использовании решателей ‘arpack’ или ‘randomized’. Передайте целое число для воспроизводимых результатов при многократном вызове функций. См. Справочник.
Добавлена в версии 0.18.0.
- Атрибуты:
-
- components_массив формы (n_components, n_features)
-
Главные оси в пространстве признаков, представляющие направления максимальной дисперсии в данных. Эквивалентно правым сингулярным векторам центрированных входных данных, параллельным его собственным векторам. Компоненты отсортированы по убыванию
explained_variance_. - explained_variance_массив формы (n_components,)
-
Величина дисперсии, объясняемой каждой из выбранных компонент. Оценка дисперсии использует
n_samples - 1степени свободы.Равно n_components наибольшим собственным значениям ковариационной матрицы X.
Добавлена в версии 0.18.
- explained_variance_ratio_массив формы (n_components,)
-
Процент дисперсии, объясненной каждой из выбранных компонент.
Если
n_componentsне задано, все компоненты сохраняются, а сумма отношений равна 1,0. - singular_values_массив формы (n_components,)
-
Сингулярные значения, соответствующие каждой из выбранных компонент. Сингулярные значения равны 2-нормам
n_componentsпеременных в пространстве меньшей размерности.Добавлена в версии 0.19.
- mean_массив формы (n_features,)
-
Эмпирическое среднее значение для каждого признака, оцененное по обучающему набору.
Равно
X.mean(axis=0). - n_components_int
-
Оцененное количество компонент. Когда n_components установлено в ‘mle’ или число между 0 и 1 (с svd_solver == ‘full’), это число оценивается по входным данным. В противном случае оно равно параметру n_components или меньшей величине из n_features и n_samples, если n_components равно None.
- n_samples_int
-
Количество выборок в обучающих данных.
- noise_variance_float
-
Оцененная ковариация шума, следующая за моделью вероятностного PCA из работы Типпинга и Бишопа 1999 года. См. «Распознавание образов и машинное обучение» К. Бишопа, 12.2.1 стр. 574 или http://www.miketipping.com/papers/met-mppca.pdf. Он необходим для вычисления оценочной ковариации данных и оценки выборок.
Равно среднему значению (min(n_features, n_samples) - n_components) наименьших собственных значений ковариационной матрицы X.
- n_features_in_int
-
Количество признаков, увиденных во время fit.
Добавлена в версии 0.24.
-
feature_names_in_массив формы (
n_features_in_,) -
Имена признаков, увиденных во время fit. Определены только тогда, когда
Xимеет имена признаков, которые все являются строками.Добавлена в версии 1.0.
См. также
KernelPCA-
Ядерный метод главных компонент.
SparsePCA-
Разложение главных компонент с разреженностью.
TruncatedSVD-
Снижение размерности с помощью усеченного SVD.
IncrementalPCA-
Инкрементальный метод главных компонент.
Ссылки
Для n_components == ‘mle’ этот класс использует метод из: Minka, T. P.. “Automatic choice of dimensionality for PCA”. In NIPS, pp. 598-604
Реализует вероятностную модель PCA из: Tipping, M. E., and Bishop, C. M. (1999). “Probabilistic principal component analysis”. Journal of the Royal Statistical Society: Series B (Statistical Methodology), 61(3), 611-622. через методы score и score_samples.
Для svd_solver == ‘arpack’, см.
scipy.sparse.linalg.svds.Для svd_solver == ‘randomized’, см.: Halko, N., Martinsson, P. G., and Tropp, J. A. (2011). “Finding structure with randomness: Probabilistic algorithms for constructing approximate matrix decompositions”. SIAM review, 53(2), 217-288. и также Martinsson, P. G., Rokhlin, V., and Tygert, M. (2011). “A randomized algorithm for the decomposition of matrices”. Applied and Computational Harmonic Analysis, 30(1), 47-68.
Примеры
>>> import numpy as np >>> from sklearn.decomposition import PCA >>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]]) >>> pca = PCA(n_components=2) >>> pca.fit(X) PCA(n_components=2) >>> print(pca.explained_variance_ratio_) [0.9924... 0.0075...] >>> print(pca.singular_values_) [6.30061... 0.54980...]
>>> pca = PCA(n_components=2, svd_solver='full') >>> pca.fit(X) PCA(n_components=2, svd_solver='full') >>> print(pca.explained_variance_ratio_) [0.9924... 0.00755...] >>> print(pca.singular_values_) [6.30061... 0.54980...]
>>> pca = PCA(n_components=1, svd_solver='arpack') >>> pca.fit(X) PCA(n_components=1, svd_solver='arpack') >>> print(pca.explained_variance_ratio_) [0.99244...] >>> print(pca.singular_values_) [6.30061...]
- fit(X, y=None)[source]
-
Обучите модель с помощью X.
- Параметры:
-
- X{массив, разреженная матрица} формы (n_samples, n_features)
-
Данные обучения, где
n_samples— количество выборок, аn_features— количество признаков. - yИгнорируется
-
Игнорируется.
- Возвращает:
-
- selfобъект
-
Возвращает сам экземпляр.
- fit_transform(X, y=None)[source]
-
Обучите модель с помощью X и примените понижение размерности к X.
- Параметры:
-
- X{массив, разреженная матрица} формы (n_samples, n_features)
-
Данные обучения, где
n_samples— количество выборок, аn_features— количество признаков. - yИгнорируется
-
Игнорируется.
- Возвращает:
-
- X_newмассив формы (n_samples, n_components)
-
Преобразованные значения.
Примечания
Этот метод возвращает массив в порядке Fortran. Чтобы преобразовать его в массив в порядке C, используйте ‘np.ascontiguousarray’.
- get_covariance()[source]
-
Вычислить ковариацию данных с помощью генеративной модели.
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)[source]
-
Получить имена выходных признаков для преобразования.
Имена выходных признаков будут иметь префикс в нижнем регистре имени класса. Например, если преобразователь выводит 3 признака, то имена выходных признаков следующие:
["class_name0", "class_name1", "class_name2"].- Параметры:
-
- input_featuresмассив строк или None, по умолчанию=None
-
Используется только для проверки имен признаков с именами, увиденными в
fit.
- Возвращает:
-
- feature_names_outмассив объектов str
-
Имена преобразованных признаков.
- get_metadata_routing()[source]
-
Получить маршрутизацию метаданных этого объекта.
См. Руководство пользователя о том, как работает механизм маршрутизации.
- Возвращает:
-
- routingMetadataRequest
-
Объект
MetadataRequest, содержащий информацию о маршрутизации.
- get_params(deep=True)[source]
-
Получить параметры этого оценщика.
- Параметры:
-
- deepbool, по умолчанию=True
-
Если True, возвращает параметры этого оценщика и содержащихся в нем дочерних объектов, являющихся оценщиками.
- Возвращает:
-
- paramsсловарь
-
Имена параметров, сопоставленные со значениями.
- get_precision()[source]
-
Вычислить точность матрицы данных с помощью генеративной модели.
Равна обратной матрице ковариации, но вычислена с помощью леммы о матричном обращении для повышения эффективности.
- Возвращает:
-
- precisionмассив, форма=(n_features, n_features)
-
Оцененная точность данных.
- inverse_transform(X)[source]
-
Преобразовать данные обратно в исходное пространство.
Другими словами, вернуть входной
X_original, преобразование которого было бы X.- Параметры:
-
- Xмассив формы (n_samples, n_components)
-
Новые данные, где
n_samples— количество выборок, аn_components— количество компонент.
- Возвращает:
-
- X_original массив формы (n_samples, n_features)
-
Исходные данные, где
n_samples— количество выборок, аn_features— количество признаков.
Примечания
Если отбеливание включено, inverse_transform вычислит точное обратное действие, что включает обратное отбеливание.
- score(X, y=None)[source]
-
Возвращает среднюю логарифмическую вероятность всех выборок.
См. «Распознавание образов и машинное обучение» К. Бишопа, 12.2.1 с. 574 или http://www.miketipping.com/papers/met-mppca.pdf
- Параметры:
-
- Xarray-like формы (n_samples, n_features)
-
Данные.
- yИгнорируется
-
Игнорируется.
- Возвращает:
-
- llfloat
-
Средняя логарифмическая вероятность выборок в соответствии с текущей моделью.
- score_samples(X)[source]
-
Возвращает логарифмическую вероятность каждой выборки.
См. «Распознавание образов и машинное обучение» К. Бишопа, 12.2.1 с. 574 или http://www.miketipping.com/papers/met-mppca.pdf
- Параметры:
-
- Xarray-like формы (n_samples, n_features)
-
Данные.
- Возвращает:
-
- llndarray формы (n_samples,)
-
Логарифмическая вероятность каждой выборки в соответствии с текущей моделью.
- set_output(*, transform=None)[source]
-
Установить контейнер вывода.
См. Представление API set_output для примера использования API.
- Параметры:
-
- transform{“default”, “pandas”, “polars”}, по умолчанию=None
-
Настройка вывода
transformиfit_transform.-
"default": Формат вывода преобразователя по умолчанию -
"pandas": Вывод DataFrame -
"polars": Вывод Polars -
None: Настройка преобразования не изменена
Добавлен в версии 1.4:
"polars"опция была добавлена. -
- Возвращает:
-
- selfэкземпляр эстиматора
-
Экземпляр эстиматора.
- set_params(**params)[source]
-
Установить параметры этого эстиматора.
Метод работает с простыми эстиматорами, а также со вложенными объектами (такими как
Pipeline). Последние имеют параметры вида<component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.- Параметры:
-
- **paramsdict
-
Параметры эстиматора.
- Возвращает:
-
- selfэкземпляр эстиматора
-
Экземпляр эстиматора.
- transform(X)[source]
-
Применить понижение размерности к X.
X проектируется на первые главные компоненты, предварительно извлеченные из обучающего набора.
- Параметры:
-
- X{array-like, sparse matrix} формы (n_samples, n_features)
-
Новые данные, где
n_samples— количество выборок, аn_features— количество признаков.
- Возвращает:
-
- X_newarray-like формы (n_samples, n_components)
-
Проекция X на первые главные компоненты, где
n_samples— количество выборок, аn_components— количество компонент.
Примеры галереи
© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.decomposition.PCA.html