Spec-Zone.ru › scikit-learn

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.eigh LAPACK для полного SVD или реализация scipy.sparse.linalg.eigsh ARPACK для усечённого 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.

Литература

[1]

Schölkopf, Bernhard, Alexander Smola, and Klaus-Robert Müller. «Анализ главных компонент с ядрами». Международная конференция по искусственным нейронным сетям. Springer, Berlin, Heidelberg, 1997.

[2]

Bakır, Gökhan H., Jason Weston, and Bernhard Schölkopf. «Обучение поиску прообразов». Advances in neural information processing systems 16 (2004): 449-456.

[3] (1,2,3)

Halko, Nathan, Per-Gunnar Martinsson, and Joel A. Tropp. «Поиск структуры с помощью случайности: вероятностные алгоритмы для построения приближённых разложений матриц». SIAM review 53.2 (2011): 217-288.

[4]

Martinsson, Per-Gunnar, Vladimir Rokhlin, and Mark Tygert. «Рандомизированный алгоритм разложения матриц». Applied and Computational Harmonic Analysis 30.1 (2011): 47-68.

Примеры

>>> 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 — количество признаков.

Литература

Bakır, Gökhan H., Jason Weston, and Bernhard Schölkopf. «Обучение поиску прообразов». Advances in neural information processing systems 16 (2004): 449-456.

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 — количество компонент.

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

Удаление шума с изображений с помощью Kernel PCA

Анализ главных компонент с ядрами (Kernel PCA)

© 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

Spec-Zone.ru

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