当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sklearn KernelPCA用法及代码示例


本文简要介绍python语言中 sklearn.decomposition.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)。

通过使用内核进行非线性降维(参见 Pairwise metrics, Affinities and Kernels)。

它使用完整 SVD 的 scipy.linalg.eigh LAPACK 实现或截断 SVD 的 scipy.sparse.linalg.eigsh ARPACK 实现,具体取决于输入数据的形状和要提取的组件数量。它还可以通过[3]中提出的方法使用随机截断的SVD,请参见eigen_solver

在用户指南中阅读更多信息。

参数

n_components整数,默认=无

组件的数量。如果为 None,则保留所有非零分量。

kernel{‘linear’, ‘poly’,‘rbf’, ‘sigmoid’, ‘cosine’, ‘precomputed’},默认='线性'

用于 PCA 的内核。

gamma浮点数,默认=无

rbf、poly 和 sigmoid 内核的内核系数。被其他内核忽略。如果 gammaNone ,则将其设置为 1/n_features

degree整数,默认=3

聚核的度数。被其他内核忽略。

coef0浮点数,默认=1

poly 和 sigmoid 内核中的独立项。被其他内核忽略。

kernel_params字典,默认=无

内核的参数(关键字参数)和值作为可调用对象传递。被其他内核忽略。

alpha浮点数,默认=1.0

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

fit_inverse_transform布尔,默认=假

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

eigen_solver{‘auto’, ‘dense’, ‘arpack’, ‘randomized’},默认='自动'

选择要使用的特征求解器。如果 n_components 远小于训练样本的数量,则随机化(或较小范围的 arpack)可能比密集特征求解器更有效。随机SVD按照Halko等人的方法进行[3]。

汽车:

求解器由基于 n_samples(训练样本数)和 n_components 的默认策略选择:如果要提取的组件数小于 10(严格)且样本数大于 200(严格), ‘arpack’ 方法已启用。否则,将计算精确的完整特征值分解并在之后选择性地截断(‘dense’ 方法)。

稠密:

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

包:

使用 scipy.sparse.linalg.eigsh 运行 SVD 截断为 n_components 调用 ARPACK 求解器。它严格要求 0 < n_components < n_samples

随机:

按照 Halko 等人的方法运行随机 SVD。 [3]。当前的实现根据模块选择特征值;因此,如果核不是半正定的,则使用此方法可能会导致意外结果。另见[4]。

tol浮点数,默认=0

arpack 的收敛容差。如果为 0,arpack 将选择最优值。

max_iter整数,默认=无

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

iterated_powerint >= 0,或‘auto’,默认='auto'

由svd_solver == ‘randomized’ 计算的幂方法的迭代次数。 ‘auto’时,n_components < 0.1 * min(X.shape)时设置为7,其他设置为4。

remove_zero_eig布尔,默认=假

如果为 True,则移除所有特征值为零的分量,因此输出中的分量数可能小于 n_components(有时由于数值不稳定性甚至为零)。当 n_components 为 None 时,忽略此参数,并且无论如何都会删除具有零特征值的组件。

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

eigen_solver == ‘arpack’或‘randomized’时使用。传递 int 以获得跨多个函数调用的可重现结果。请参阅术语表。

copy_X布尔,默认=真

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

n_jobs整数,默认=无

要运行的并行作业数。 None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有处理器。有关详细信息,请参阅词汇表。

属性

eigenvalues_ndarray 形状 (n_components,)

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

lambdas_ndarray 形状 (n_components,)

已弃用:属性 lambdas_ 在版本 1.0 中已弃用,并将在 1.2 中删除。

eigenvectors_ndarray 形状(n_samples,n_components)

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

alphas_ndarray 形状(n_samples,n_components)

已弃用:属性 alphas_ 在版本 1.0 中已弃用,并将在 1.2 中删除。

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_ 是参考。此属性用于调用转换。

n_features_in_int

拟合期间看到的特征数。

feature_names_in_ndarray 形状(n_features_in_,)

拟合期间看到的特征名称。仅当 X 具有全为字符串的函数名称时才定义。

参考

1

Schölkopf、Bernhard、Alexander Smola 和Klaus-Robert Müller。 “核主成分分析。”人工神经网络国际会议。施普林格,柏林,海德堡,1997。

2

Bakır、Gökhan H.、Jason Weston 和 Bernhard Schölkopf。 “学习寻找原像。”神经信息处理系统的进展 16 (2004): 449-456。

3(1,2,3)

Halko、Nathan、Per-Gunnar Martinsson 和 Joel A. Tropp。 “寻找具有随机性的结构:构造近似矩阵分解的概率算法。”暹罗评论 53.2 (2011): 217-288。

4

Martinsson、Per-Gunnar、Vladimir Rokhlin 和 Mark Tygert。 “矩阵分解的随机算法。”应用和计算谐波分析 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)

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.decomposition.KernelPCA。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。