KernelPCA#

class sklearn.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)[源代码]#

核心主成分分析(KPCA)。

通过使用核实现非线性降维 [1], 另见 成对指标、亲和力和核心 .

它使用 scipy.linalg.eigh LAPACK实现完整的MVD或 scipy.sparse.linalg.eigsh 截断的MVD的ARPACK实现,具体取决于输入数据的形状和要提取的分量的数量。它还可以通过中提出的方法使用随机截断的奇异值分解 [3], 看到 eigen_solver .

有关主成分分析(PCA)及其核心化版本(KPCA)之间的使用示例和比较,请参阅 核PCA .

有关使用KPCA对图像进行降噪的使用示例,请参阅 基于核主成分分析的图像去噪 .

阅读更多的 User Guide .

参数:
n_componentsint,默认=无

组件数量。如果无,则保留所有非零成分。

kernel{“linear”,“poly',”rbf“,”sigmoid“,”cosine“,”precomputed“} 或可调用,默认值='线性'

用于PCA的内核。

gammafloat,默认=无

径向基函数、多边形和sigmoid核的核系数。被其他果仁忽视。如果 gammaNone ,然后设置为 1/n_features .

degreefloat,默认=3

聚核的度数。被其他果仁忽视。

coef0float,默认=1

多边核和sigmoid核中的独立项。被其他果仁忽视。

kernel_paramsdict,默认=无

Parameters (keyword arguments) and values for kernel passed as callable object. Ignored by other kernels.

alphafloat,默认=1.0

学习逆变换的岭回归超参数(当fit_inverter_transform=True时)。

fit_inverse_transform布尔,默认=假

学习非预计算内核的逆变换(即学习找到点的原像)。该方法基于 [2].

eigen_solver'自动'、'密集'、'随机'、&#3 默认='自动'

选择要使用的特征解算器。如果 n_components 比训练样本的数量少得多,随机化(或较小程度的arpack)可能比密集特征解算器更有效。根据Halko等人的方法进行随机瓣膜分解 [3].

自动:

求解器是根据n_samples(训练样本的数量)通过默认策略选择的,并且 n_components :如果要提取的组件数量小于10(严格)且样本数量大于200(严格),则启用“arpack”方法。否则,计算精确的全特征值分解,并在随后可选地进行截断(“密集”方法)。

密集:

运行精确的完整特征值分解,通过以下方式调用标准LAPACK求解器 scipy.linalg.eigh ,并通过后处理选择组件

arpack:

运行被截断到n_分量的DDD,调用ARPACK求解器 scipy.sparse.linalg.eigsh .它严格要求0 < n_components < n_samples

随机化:

通过Halko等人的方法进行随机的DID。 [3]. 当前的实现根据其模块选择特征值;因此,如果内核不是正半定的,使用这种方法可能会导致意外的结果。另见 [4].

在 1.0 版本发生变更: 'randomized' 加入浓度

tolfloat,默认=0

arpack的收敛容忍度。如果为0,arpack将选择最佳值。

max_iterint,默认=无

arpack的最大迭代次数如果没有,arpack将选择最佳值。

iterated_powerint >= 0,或'自动',默认='自动'

svd_solver计算的乘方法迭代次数==“随机化”。当“自动”时,设置为7 n_components < 0.1 * min(X.shape) ,其他设置为4。

Added in version 1.0.

remove_zero_eig布尔,默认=假

如果为True,则删除所有特征值为零的分量,以便输出中的分量数量可能< n_components(有时由于数字不稳定而甚至为零)。当n_components为无时,此参数将被忽略,并且无论如何都将删除具有零特征值的分量。

random_stateint,RandomState实例或无,默认=无

时使用 eigen_solver ==“arpack”或“随机化”。传递int以获得跨多个函数调用的可重复结果。看到 Glossary .

Added in version 0.18.

copy_X布尔,默认=True

如果为True,输入X将被模型复制并存储在 X_fit_ 属性如果不对X进行进一步更改,则设置 copy_X=False 通过存储引用来节省内存。

Added in version 0.18.

n_jobsint,默认=无

要运行的并行作业数。 None 意思是1,除非在a中 joblib.parallel_backend 上下文 -1 意味着使用所有处理器。看到 Glossary 了解更多详细信息。

Added in version 0.18.

属性:
eigenvalues_形状的nd数组(n_components,)

以降序排列的中心核矩阵的特征值。如果 n_componentsremove_zero_eig 未设置,则存储所有值。

eigenvectors_形状的nd数组(n_samples,n_components)

中心核矩阵的特征载体。如果 n_componentsremove_zero_eig 未设置,则存储所有组件。

dual_coef_形状的nd数组(n_samples,n_features)

逆变换矩阵。仅在以下情况下可用 fit_inverse_transform 是真的

X_transformed_fit_形状的nd数组(n_samples,n_components)

将匹配数据投影到核主成分上。仅在以下情况下可用 fit_inverse_transform 是真的

X_fit_形状的nd数组(n_samples,n_features)

用于匹配模型的数据。如果 copy_X=False 那么 X_fit_ 是一个参考。此属性用于转换调用。

n_features_in_int

期间看到的功能数量 fit .

Added in version 0.24.

feature_names_in_ :nd形状数组 (n_features_in_ ,)nd数组形状(

Names of features seen during fit. Defined only when X has feature names that are all strings.

Added in version 1.0.

gamma_浮子

Kernel coefficient for rbf, poly and sigmoid kernels. When gamma is explicitly provided, this is just the same as gamma. When gamma is None, this is the actual value of kernel coefficient.

Added in version 1.3.

参见

FastICA

独立成分分析的快速算法。

IncrementalPCA

增量主成分分析。

NMF

非负矩阵分解。

PCA

主成分分析。

SparsePCA

稀疏主成分分析。

TruncatedSVD

使用截断的奇异值降低维度。

引用

[1]

Schölkopf, Bernhard, Alexander Smola, and Klaus-Robert Müller. "Kernel principal component analysis." International conference on artificial neural networks. Springer, Berlin, Heidelberg, 1997. <https://people.eecs.berkeley.edu/~wainwrig/stat241b/scholkopf_kernel.pdf> _

[2]

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. <https://papers.nips.cc/paper/2003/file/ac1ad983e08ad3304a97e147f522747e-Paper.pdf> _

[4]

Martinsson, Per-Gunnar, Vladimir Rokhlin, and Mark Tygert. "A randomized algorithm for the decomposition of matrices." Applied and Computational Harmonic Analysis 30.1 (2011): 47-68. <https://www.sciencedirect.com/science/article/pii/S1063520310000242> _

示例

>>> 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形状(n_samples,n_features)的{类数组,稀疏矩阵}

训练载体,在哪里 n_samples 是样本数量和 n_features 是功能的数量。

y忽视

未使用,按照惯例,为了API一致性而存在。

返回:
self对象

返回实例本身。

fit_transform(X, y=None, **params)[源代码]#

根据X中的数据匹配模型并转换X。

参数:
X形状(n_samples,n_features)的{类数组,稀疏矩阵}

训练载体,在哪里 n_samples 是样本数量和 n_features 是功能的数量。

y忽视

未使用,按照惯例,为了API一致性而存在。

**paramskwargs

传递给fit_transform实例的参数(关键字参数)和值。

返回:
X_new形状的nd数组(n_samples,n_components)

返回实例本身。

get_feature_names_out(input_features=None)[源代码]#

获取用于转换的输出要素名称。

输出的功能名称将以大写的类别名称为开头。例如,如果Transformer输出3个特征,则输出的特征名称为: ["class_name0", "class_name1", "class_name2"] .

参数:
input_features字符串或无的类数组,默认=无

仅用于通过中看到的名称验证要素名称 fit .

返回:
feature_names_out字符串对象的nd数组

转换的功能名称。

get_metadata_routing()[源代码]#

获取此对象的元数据路由。

请检查 User Guide 关于路由机制如何工作。

返回:
routingMetadataRequest

A MetadataRequest 封装路由信息。

get_params(deep=True)[源代码]#

获取此估计器的参数。

参数:
deep布尔,默认=True

如果为True,将返回此估计量和包含的作为估计量的子对象的参数。

返回:
paramsdict

参数名称映射到其值。

inverse_transform(X)[源代码]#

将X转换回原始空间。

inverse_transform 使用学习的预图像来逼近逆变换。预图像是通过原始数据在其低维表示载体上的核岭回归来学习的。

备注

当用户想要计算“线性”内核的逆变换时,建议他们使用 PCA 而不是.不像 PCA , KernelPCAinverse_transform 由于使用中心核,当使用“线性”核时,不会重建数据的平均值。

参数:
X形状(n_samples,n_components)的{类数组,稀疏矩阵}

训练载体,在哪里 n_samples 是样本数量和 n_features 是功能的数量。

返回:
X_new形状的nd数组(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. <https://papers.nips.cc/paper/2003/file/ac1ad983e08ad3304a97e147f522747e-Paper.pdf> _

set_output(*, transform=None)[源代码]#

设置输出容器。

看到 介绍 set_output API 了解如何使用API的示例。

参数:
transform{“默认”,“pandas”,“polars”},默认=无

配置输出 transformfit_transform .

  • "default" :Transformer的默认输出格式

  • "pandas" :DataFrame输出

  • "polars" :两极输出

  • None :转换配置不变

Added in version 1.4: "polars" 添加了选项。

返回:
self估计器实例

估计实例。

set_params(**params)[源代码]#

设置此估计器的参数。

该方法适用于简单估计器以及嵌套对象(例如 Pipeline ).后者具有以下形式的参数 <component>__<parameter> 以便可以更新嵌套对象的每个组件。

参数:
**paramsdict

估计参数。

返回:
self估计器实例

估计实例。

transform(X)[源代码]#

变形X。

参数:
X形状(n_samples,n_features)的{类数组,稀疏矩阵}

训练载体,在哪里 n_samples 是样本数量和 n_features 是功能的数量。

返回:
X_new形状的nd数组(n_samples,n_components)

返回实例本身。