本文简要介绍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 内核的内核系数。被其他内核忽略。如果
gamma
是None
,则将其设置为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_power:int >= 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_state:int、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_components
和remove_zero_eig
,则存储所有值。lambdas_
ndarray 形状 (n_components,)已弃用:属性
lambdas_
在版本 1.0 中已弃用,并将在 1.2 中删除。- eigenvectors_:ndarray 形状(n_samples,n_components)
中心核矩阵的特征向量。如果
n_components
和remove_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)
- 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)
相关用法
- Python sklearn KernelDensity用法及代码示例
- Python sklearn KernelRidge用法及代码示例
- Python sklearn KernelCenterer用法及代码示例
- Python sklearn KBinsDiscretizer用法及代码示例
- Python sklearn KNeighborsTransformer用法及代码示例
- Python sklearn KNeighborsRegressor用法及代码示例
- Python sklearn KNeighborsRegressor.kneighbors用法及代码示例
- Python sklearn KDTree用法及代码示例
- Python sklearn KNeighborsClassifier.kneighbors用法及代码示例
- Python sklearn KNeighborsClassifier用法及代码示例
- Python sklearn KNeighborsRegressor.kneighbors_graph用法及代码示例
- Python sklearn KNeighborsClassifier.kneighbors_graph用法及代码示例
- Python sklearn KNNImputer用法及代码示例
- Python sklearn KNeighborsTransformer.kneighbors_graph用法及代码示例
- Python sklearn KMeans用法及代码示例
- Python sklearn KFold用法及代码示例
- Python sklearn KNeighborsTransformer.kneighbors用法及代码示例
- Python sklearn jaccard_score用法及代码示例
- Python sklearn WhiteKernel用法及代码示例
- Python sklearn CalibrationDisplay.from_predictions用法及代码示例
- Python sklearn VotingRegressor用法及代码示例
- Python sklearn gen_batches用法及代码示例
- Python sklearn ExpSineSquared用法及代码示例
- Python sklearn MDS用法及代码示例
- Python sklearn adjusted_rand_score用法及代码示例
注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.decomposition.KernelPCA。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。