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核的核系数。被其他果仁忽视。如果
gamma
是None
,然后设置为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'自动'、'密集'、'随机'、 默认='自动'
选择要使用的特征解算器。如果
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_components
和remove_zero_eig
未设置,则存储所有值。- eigenvectors_形状的nd数组(n_samples,n_components)
中心核矩阵的特征载体。如果
n_components
和remove_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 asgamma
. Whengamma
isNone
, 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
,KernelPCA
的inverse_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”},默认=无
配置输出
transform
和fit_transform
."default"
:Transformer的默认输出格式"pandas"
:DataFrame输出"polars"
:两极输出None
:转换配置不变
Added in version 1.4:
"polars"
添加了选项。
- 返回:
- self估计器实例
估计实例。