KernelPCA#

класс sklearn.decomposition.KernelPCA(n_components=None, *, ядро='linear', gamma=None, степень=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)[источник]#

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

Нелинейное снижение размерности с использованием ядер [1], см. также Парные метрики, сходства и ядра.

Он использует scipy.linalg.eigh реализация LAPACK полного SVD или scipy.sparse.linalg.eigsh реализация ARPACK усеченного SVD, в зависимости от формы входных данных и количества извлекаемых компонентов. Также может использоваться рандомизированный усеченный SVD методом, предложенным в [3], см. eigen_solver.

Для примера использования и сравнения между Анализом главных компонент (PCA) и его ядерной версией (KPCA), см. Ядерный PCA.

Пример использования для удаления шума изображений с помощью KPCA см. в Удаление шума с изображения с использованием ядерного PCA.

Подробнее в Руководство пользователя.

Параметры:
n_componentsint, default=None

Количество компонент. Если None, сохраняются все ненулевые компоненты.

ядро{‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘cosine’, ‘precomputed’} или вызываемый объект, по умолчанию=’linear’

Ядро, используемое для PCA.

gammafloat, по умолчанию=None

Коэффициент ядра для ядер rbf, poly и sigmoid. Игнорируется другими ядрами. Если gamma является None, тогда он устанавливается в 1/n_features.

степеньfloat, по умолчанию=3

Степень для полиномиальных ядер. Игнорируется другими ядрами.

coef0float, по умолчанию=1

Независимый член в полиномиальных и сигмоидных ядрах. Игнорируется другими ядрами.

kernel_paramsdict, по умолчанию=None

Параметры (ключевые аргументы) и значения для ядра, передаваемые как вызываемый объект. Игнорируются другими ядрами.

alphafloat, по умолчанию=1.0

Гиперпараметр гребневой регрессии, которая изучает обратное преобразование (когда fit_inverse_transform=True).

fit_inverse_transformbool, по умолчанию=False

Изучает обратное преобразование для непредвычисленных ядер (т.е. учится находить прообраз точки). Этот метод основан на [2].

eigen_solver{‘auto’, ‘dense’, ‘arpack’, ‘randomized’}, по умолчанию=’auto’

Выбор решателя собственных значений. Если n_components значительно меньше количества обучающих выборок, рандомизированный (или arpack в меньшей степени) может быть более эффективным, чем плотный решатель собственных значений. Рандомизированное SVD выполняется в соответствии с методом Халко и др. [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

рандомизированный :

запустить рандомизированное SVD методом Halko et al. [3]. Текущая реализация выбирает собственные значения на основе их модуля; поэтому использование этого метода может привести к неожиданным результатам, если ядро не является положительно полуопределенным. См. также [4].

Изменено в версии 1.0: 'randomized' был добавлен.

tolfloat, по умолчанию=0

Допуск сходимости для arpack. Если 0, оптимальное значение будет выбрано arpack.

max_iterint, default=None

Максимальное количество итераций для arpack. Если None, оптимальное значение будет выбрано arpack.

iterated_powerint >= 0, или 'auto', по умолчанию='auto'

Количество итераций для степенного метода, вычисляемого при svd_solver == 'randomized'. При 'auto' устанавливается в 7, когда n_components < 0.1 * min(X.shape), в противном случае устанавливается в 4.

Добавлено в версии 1.0.

remove_zero_eigbool, по умолчанию=False

Если True, то все компоненты с нулевыми собственными значениями удаляются, так что количество компонентов на выходе может быть < n_components (а иногда даже нулевым из-за численной нестабильности). Когда n_components равно None, этот параметр игнорируется, и компоненты с нулевыми собственными значениями удаляются в любом случае.

random_stateint, экземпляр RandomState или None, по умолчанию=None

Используется, когда eigen_solver == ‘arpack’ или ‘randomized’. Передайте int для воспроизводимых результатов при множественных вызовах функции. См. Глоссарий.

Добавлено в версии 0.18.

copy_Xbool, по умолчанию=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 формы (n_components,)

Собственные значения центрированной матрицы ядра в порядке убывания. Если n_components и remove_zero_eig не установлены, то все значения сохраняются.

eigenvectors_ndarray формы (n_samples, n_components)

Собственные векторы центрированной матрицы ядра. Если n_components и remove_zero_eig не установлены, то сохраняются все компоненты.

dual_coef_ndarray формы (n_samples, n_features)

Обратная матрица преобразования. Доступна только когда fit_inverse_transform равно True.

X_transformed_fit_ndarray формы (n_samples, n_components)

Проекция подогнанных данных на главные компоненты ядра. Доступно только когда fit_inverse_transform равно True.

X_fit_ndarray формы (n_samples, n_features)

Данные, используемые для обучения модели. Если copy_X=False, затем X_fit_ является ссылкой. Этот атрибут используется для вызовов transform.

n_features_in_int

Количество признаков, замеченных во время fit.

Добавлено в версии 0.24.

feature_names_in_ndarray формы (n_features_in_,)

Имена признаков, наблюдаемых во время fit. Определено только когда 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} формы (n_samples, n_features)

Вектор обучения, где n_samples это количество образцов и n_features это количество признаков.

yИгнорируется

Не используется, присутствует для согласованности API по соглашению.

Возвращает:
selfobject

Возвращает сам экземпляр.

fit_transform(X, y=None, **params)[источник]#

Обучить модель на данных X и преобразовать X.

Параметры:
X{array-like, sparse matrix} формы (n_samples, n_features)

Вектор обучения, где n_samples это количество образцов и n_features это количество признаков.

yИгнорируется

Не используется, присутствует для согласованности API по соглашению.

**paramskwargs

Параметры (именованные аргументы) и значения, передаваемые экземпляру fit_transform.

Возвращает:
X_newndarray формы (n_samples, n_components)

Преобразованные значения.

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

Имена параметров, сопоставленные с их значениями.

inverse_transform(X)[источник]#

Преобразовать X обратно в исходное пространство.

inverse_transform аппроксимирует обратное преобразование, используя обученный прообраз. Прообраз обучается с помощью ядерной гребневой регрессии исходных данных на их низкоразмерных векторах представления.

Примечание

Когда пользователи хотят вычислить обратное преобразование для ядра 'linear', рекомендуется использовать PCA вместо. В отличие от PCA, KernelPCA’s inverse_transform не восстанавливает среднее значение данных при использовании ядра 'linear' из-за использования центрированного ядра.

Параметры:
X{array-like, sparse matrix} формы (n_samples, n_components)

Вектор обучения, где n_samples это количество образцов и n_features это количество признаков.

Возвращает:
X_originalndarray формы (n_samples, n_features)

Исходные данные, где n_samples это количество образцов и n_features это количество признаков.

Ссылки

Bakır, Gökhan H., Jason Weston, and Bernhard Schölkopf. "Learning to find pre-images." Advances in neural information processing systems 16 (2004): 449-456.

set_output(*, преобразовать=None)[источник]#

Установить контейнер вывода.

См. Введение API set_output для примера использования API.

Параметры:
преобразовать{“default”, “pandas”, “polars”}, по умолчанию=None

Настройка вывода transform и fit_transform.

  • "default": Формат вывода трансформера по умолчанию

  • "pandas": DataFrame вывод

  • "polars": Вывод Polars

  • None: Конфигурация преобразования не изменена

Добавлено в версии 1.4: "polars" опция была добавлена.

Возвращает:
selfэкземпляр estimator

Экземпляр оценщика.

set_params(**params)[источник]#

Установить параметры этого оценщика.

Метод работает как на простых оценщиках, так и на вложенных объектах (таких как Pipeline). Последние имеют параметры вида __ чтобы можно было обновить каждый компонент вложенного объекта.

Параметры:
**paramsdict

Параметры оценщика.

Возвращает:
selfэкземпляр estimator

Экземпляр оценщика.

преобразовать(X)[источник]#

Преобразовать X.

Параметры:
X{array-like, sparse matrix} формы (n_samples, n_features)

Вектор обучения, где n_samples это количество образцов и n_features это количество признаков.

Возвращает:
X_newndarray формы (n_samples, n_components)

Проекция X на первые главные компоненты, где n_samples — это количество образцов и n_components является количеством компонентов.