KernelPCA
- classsklearn.decomposition.KernelPCA(n_components=None, *, kernel='linear', gamma=None, degree=3, coef0=1, kernel_params=None, alpha=1.0, fit_inverse_transform=False, eigen_solver='auto', tol=0, max_iter=None, iterated_power='auto', remove_zero_eig=False, random_state=None, copy_X=True, n_jobs=None)[source]
-
Анализ главных компонент с ядрами (KPCA).
Нелинейное снижение размерности с помощью ядер [1]; см. также Попарные метрики, меры сходства и ядра.
Используется реализация
scipy.linalg.eighLAPACK для полного SVD или реализацияscipy.sparse.linalg.eigshARPACK для усечённого SVD — в зависимости от формы входных данных и количества извлекаемых компонент. Также можно использовать рандомизированный усечённый SVD, предложенный в методе [3]; см.eigen_solver.Пример использования и сравнение анализа главных компонент (PCA) с его версией на основе ядер (KPCA) см. в разделе Анализ главных компонент с ядрами (Kernel PCA).
Пример использования KPCA для удаления шума с изображений см. в разделе Удаление шума с изображений с помощью Kernel PCA.
Подробнее см. в Руководстве пользователя.
- Параметры:
-
- n_componentsint, default=None
-
Количество компонент. Если значение равно None, сохраняются все ненулевые компоненты.
- kernel{‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘cosine’, ‘precomputed’} or callable, default=’linear’
-
Ядро, используемое для PCA.
- gammafloat, default=None
-
Коэффициент ядра для ядер rbf, poly и sigmoid. Игнорируется для других ядер. Если
gammaравноNone, то ему присваивается значение1/n_features. - degreefloat, default=3
-
Степень для ядер poly. Игнорируется для других ядер.
- coef0float, default=1
-
Свободный член в ядрах poly и sigmoid. Игнорируется для других ядер.
- kernel_paramsdict, default=None
-
Параметры (именованные аргументы) и значения для ядра, передаваемого в виде вызываемого объекта. Игнорируются для других ядер.
- alphafloat, default=1.0
-
Гиперпараметр ридж-регрессии, обучающей обратное преобразование (если fit_inverse_transform=True).
- fit_inverse_transformbool, default=False
-
Обучать обратное преобразование для ядер, не заданных заранее (то есть обучаться находить прообраз точки). Этот метод основан на работе [2].
- eigen_solver{‘auto’, ‘dense’, ‘arpack’, ‘randomized’}, default=’auto’
-
Выбор используемого решателя собственных значений. Если
n_componentsзначительно меньше количества обучающих выборок, рандомизированный метод (или, в меньшей степени, arpack) может быть эффективнее плотного решателя собственных значений. Рандомизированный SVD вычисляется методом Halko et al [3].- auto :
-
решатель выбирается по умолчанию на основе n_samples (количества обучающих выборок) и
n_components: если количество извлекаемых компонент строго меньше 10, а количество выборок строго больше 200, используется метод ‘arpack’. В противном случае вычисляется точное полное разложение на собственные значения с последующим возможным усечением (‘dense’). - dense :
-
вычисляет точное полное разложение на собственные значения, вызывая стандартный решатель LAPACK через
scipy.linalg.eigh, а затем выбирает компоненты в ходе постобработки - arpack :
-
вычисляет усечённый SVD до n_components, вызывая решатель ARPACK с помощью
scipy.sparse.linalg.eigsh. Требуется строгое условие 0 < n_components < n_samples - randomized :
-
вычисляет рандомизированный SVD методом Halko et al. [3]. Текущая реализация выбирает собственные значения на основе их модуля, поэтому этот метод может приводить к неожиданным результатам, если ядро не является положительно полуопределённым. См. также [4].
Изменено в версии 1.0: добавлен
'randomized'. - tolfloat, default=0
-
Допуск сходимости для arpack. Если значение равно 0, arpack выберет оптимальное значение.
- max_iterint, default=None
-
Максимальное количество итераций для arpack. Если значение равно None, arpack выберет оптимальное значение.
- iterated_powerint >= 0, or ‘auto’, default=’auto’
-
Количество итераций степенного метода, вычисляемого svd_solver == ‘randomized’. Если задано значение ‘auto’, параметр равен 7, когда
n_components < 0.1 * min(X.shape), в противном случае он равен 4.Добавлено в версии 1.0.
- remove_zero_eigbool, default=False
-
Если True, удаляются все компоненты с нулевыми собственными значениями, поэтому количество компонент в выходных данных может быть меньше n_components (а из-за численной нестабильности иногда даже равно нулю). Если n_components равно None, этот параметр игнорируется, а компоненты с нулевыми собственными значениями удаляются в любом случае.
- random_stateint, RandomState instance or None, default=None
-
Используется, когда
eigen_solver== ‘arpack’ или ‘randomized’. Передайте целое число, чтобы получать воспроизводимые результаты при нескольких вызовах функции. См. Глоссарий.Добавлено в версии 0.18.
- copy_Xbool, default=True
-
Если True, входной массив X копируется и сохраняется моделью в атрибуте
X_fit_. Если дальнейшие изменения X не планируются, значениеcopy_X=Falseпозволяет сэкономить память, сохраняя ссылку.Добавлено в версии 0.18.
- n_jobsint, default=None
-
Количество параллельных заданий.
Noneозначает 1, кроме случаев использования контекстаjoblib.parallel_backend.-1означает использование всех процессоров. Подробнее см. в Глоссарии.Добавлено в версии 0.18.
- Атрибуты:
-
- eigenvalues_ndarray of shape (n_components,)
-
Собственные значения центрированной матрицы ядра в порядке убывания. Если
n_componentsиremove_zero_eigне заданы, сохраняются все значения. - eigenvectors_ndarray of shape (n_samples, n_components)
-
Собственные векторы центрированной матрицы ядра. Если
n_componentsиremove_zero_eigне заданы, сохраняются все компоненты. - dual_coef_ndarray of shape (n_samples, n_features)
-
Матрица обратного преобразования. Доступна только если
fit_inverse_transformимеет значение True. - X_transformed_fit_ndarray of shape (n_samples, n_components)
-
Проекция обучающих данных на главные компоненты ядра. Доступна только если
fit_inverse_transformимеет значение True. - X_fit_ndarray of shape (n_samples, n_features)
-
Данные, использованные для обучения модели. Если
copy_X=False, тоX_fit_является ссылкой. Этот атрибут используется при вызовах transform. - n_features_in_int
-
Количество признаков, обнаруженных во время обучения.
Добавлено в версии 0.24.
-
feature_names_in_ndarray of shape (
n_features_in_,) -
Названия признаков, обнаруженных во время обучения. Определяется только в том случае, если
Xсодержит названия признаков, представленные строками.Добавлено в версии 1.0.
- gamma_float
-
Коэффициент ядра для ядер rbf, poly и sigmoid. Если
gammaзадан явно, это значение совпадает сgamma. ЕслиgammaравноNone, здесь хранится фактическое значение коэффициента ядра.Добавлено в версии 1.3.
См. также
FastICA-
Быстрый алгоритм анализа независимых компонент.
IncrementalPCA-
Инкрементальный анализ главных компонент.
NMF-
Неотрицательная матричная факторизация.
PCA-
Анализ главных компонент.
SparsePCA-
Разреженный анализ главных компонент.
TruncatedSVD-
Снижение размерности с помощью усечённого SVD.
Литература
Примеры
>>> from sklearn.datasets import load_digits >>> from sklearn.decomposition import KernelPCA >>> X, _ = load_digits(return_X_y=True) >>> transformer = KernelPCA(n_components=7, kernel='linear') >>> X_transformed = transformer.fit_transform(X) >>> X_transformed.shape (1797, 7)
- fit(X, y=None)[исходный код]
-
Обучить модель на данных X.
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features)
-
Обучающий вектор, где
n_samples— количество выборок, аn_features— количество признаков. - yIgnored
-
Не используется; присутствует для согласованности API по соглашению.
- Возвращает:
-
- selfobject
-
Возвращает сам экземпляр.
- fit_transform(X, y=None, **params)[исходный код]
-
Обучить модель на данных X и преобразовать X.
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features)
-
Обучающий вектор, где
n_samples— количество выборок, аn_features— количество признаков. - yIgnored
-
Не используется; присутствует для согласованности API по соглашению.
- **paramskwargs
-
Параметры (именованные аргументы) и значения, передаваемые экземпляру fit_transform.
- Возвращает:
-
- X_newndarray of shape (n_samples, n_components)
-
Преобразованные значения.
- get_feature_names_out(input_features=None)[исходный код]
-
Получить названия выходных признаков для преобразования.
К названиям выходных признаков добавляется имя класса в нижнем регистре. Например, если преобразователь возвращает 3 признака, их названия будут следующими:
["class_name0", "class_name1", "class_name2"].- Параметры:
-
- input_featuresarray-like of str or None, default=None
-
Используется только для проверки названий признаков по названиям, обнаруженным в
fit.
- Возвращает:
-
- feature_names_outndarray of str objects
-
Названия преобразованных признаков.
- get_metadata_routing()[исходный код]
-
Получить настройки маршрутизации метаданных этого объекта.
Информацию о работе механизма маршрутизации см. в Руководстве пользователя.
- Возвращает:
-
- routingMetadataRequest
-
Объект
MetadataRequest, содержащий информацию о маршрутизации.
- get_params(deep=True)[исходный код]
-
Получить параметры этого оценщика.
- Параметры:
-
- deepbool, default=True
-
Если True, возвращает параметры этого оценщика и содержащихся в нём вложенных объектов, которые являются оценщиками.
- Возвращает:
-
- paramsdict
-
Имена параметров и соответствующие им значения.
- inverse_transform(X)[исходный код]
-
Выполнить обратное преобразование X в исходное пространство.
inverse_transformприближённо вычисляет обратное преобразование, используя обученный прообраз. Прообраз обучается с помощью ядерной ридж-регрессии исходных данных по их векторам низкоразмерного представления.Примечание
Для вычисления обратного преобразования с ядром ‘linear’ рекомендуется использовать
PCA. В отличие отPCA, методinverse_transformклассаKernelPCAне восстанавливает среднее значение данных при использовании ядра ‘linear’, поскольку используется центрированное ядро.- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_components)
-
Обучающий вектор, где
n_samples— количество выборок, аn_features— количество признаков.
- Возвращает:
-
- X_originalndarray of shape (n_samples, n_features)
-
Исходные данные, где
n_samples— количество выборок, аn_features— количество признаков.
Литература
- set_output(*, transform=None)[исходный код]
-
Задать контейнер выходных данных.
Подробнее см. в руководстве пользователя, а пример использования API приведён в разделе Знакомство с API set_output.
- Параметры:
-
- transform{“default”, “pandas”, “polars”}, default=None
-
Настройка выходных данных
transformиfit_transform.-
"default": формат выходных данных преобразователя по умолчанию -
"pandas": выходные данные в формате DataFrame -
"polars": выходные данные в формате Polars -
None: конфигурация преобразования не изменяется
Добавлено в версии 1.4: добавлен параметр
"polars". -
- Возвращает:
-
- selfestimator instance
-
Экземпляр оценщика.
- set_params(**params)[исходный код]
-
Задать параметры этого оценщика.
Метод работает как с простыми оценщиками, так и с вложенными объектами (например,
Pipeline). Параметры последних имеют вид<component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.- Параметры:
-
- **paramsdict
-
Параметры оценщика.
- Возвращает:
-
- selfestimator instance
-
Экземпляр оценщика.
- transform(X)[исходный код]
-
Преобразовать X.
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features)
-
Обучающий вектор, где
n_samples— количество выборок, аn_features— количество признаков.
- Возвращает:
-
- X_newndarray of shape (n_samples, n_components)
-
Проекция X на первые главные компоненты, где
n_samples— количество выборок, аn_components— количество компонент.
Примеры из галереи
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.decomposition.KernelPCA.html