本文简要介绍python语言中 sklearn.decomposition.PCA
的用法。
用法:
class sklearn.decomposition.PCA(n_components=None, *, copy=True, whiten=False, svd_solver='auto', tol=0.0, iterated_power='auto', random_state=None)
主成分分析(PCA)。
使用数据的奇异值分解将其投影到较低维空间的线性降维。在应用 SVD 之前,输入数据居中,但未针对每个特征进行缩放。
它使用完整 SVD 的 LAPACK 实现或通过 Halko 等人的方法随机截断的 SVD。 2009,取决于输入数据的形状和要提取的组件数量。
它还可以使用截断的 SVD 的 scipy.sparse.linalg ARPACK 实现。
请注意,此类不支持稀疏输入。有关稀疏数据的替代方案,请参见
TruncatedSVD
。在用户指南中阅读更多信息。
- n_components:int、float 或 ‘mle’,默认 = 无
要保留的组件数。如果未设置 n_components 则保留所有组件:
n_components == min(n_samples, n_features)
如果
n_components == 'mle'
和svd_solver == 'full'
,则使用 Minka 的 MLE 来猜测维度。使用n_components == 'mle'
会将svd_solver == 'auto'
解释为svd_solver == 'full'
。如果
0 < n_components < 1
和svd_solver == 'full'
,选择分量数,使得需要解释的方差量大于 n_components 指定的百分比。如果
svd_solver == 'arpack'
,组件的数量必须严格小于 n_features 和 n_samples 的最小值。因此, None 情况导致:
n_components == min(n_samples, n_features) - 1
- copy:布尔,默认=真
如果为 False,传递给 fit 的数据将被覆盖并且运行 fit(X).transform(X) 不会产生预期的结果,请改用 fit_transform(X)。
- whiten:布尔,默认=假
当为 True(默认为 False)时,
components_
向量乘以 n_samples 的平方根,然后除以奇异值,以确保输出与单位 component-wise 方差不相关。白化将从转换后的信号中删除一些信息(分量的相对方差尺度),但有时可以通过使下游估计器的数据尊重一些hard-wired假设来提高下游估计器的预测准确性。
- svd_solver:{‘auto’, ‘full’, ‘arpack’, ‘randomized’},默认='自动'
- 如果自动:
求解器由基于
X.shape
和n_components
的默认策略选择:如果输入数据大于 500x500 并且要提取的组件数低于数据最小维度的 80%,则效率更高‘randomized’ 方法已启用。否则,将计算精确的完整 SVD,然后可以选择截断。- 如果满了:
通过
scipy.linalg.svd
调用标准LAPACK求解器运行精确的完整SVD并通过后处理选择组件- 如果是 arpack:
运行 SVD 被截断为 n_components 通过
scipy.sparse.linalg.svds
调用 ARPACK 求解器。它严格要求 0 < n_components < min(X.shape)- 如果随机:
通过 Halko 等人的方法运行随机 SVD。
- tol:浮点数,默认=0.0
由 svd_solver == ‘arpack’ 计算的奇异值的容差。必须在 [0.0, 无穷大) 范围内。
- iterated_power:int 或 ‘auto’,默认='auto'
由svd_solver == ‘randomized’ 计算的幂方法的迭代次数。必须在 [0, 无穷大) 范围内。
- random_state:int、RandomState 实例或无,默认=无
当使用 ‘arpack’ 或 ‘randomized’ 求解器时使用。传递 int 以获得跨多个函数调用的可重现结果。请参阅术语表。
- components_:ndarray 形状(n_components,n_features)
特征空间中的主轴,表示数据中最大方差的方向。等效地,居中输入数据的右奇异向量与其特征向量平行。组件按
explained_variance_
排序。- explained_variance_:ndarray 形状 (n_components,)
每个选定组件解释的方差量。方差估计使用
n_samples - 1
自由度。等于 X 的协方差矩阵的 n_components 个最大特征值。
- explained_variance_ratio_:ndarray 形状 (n_components,)
每个选定组件解释的方差百分比。
如果未设置
n_components
,则存储所有分量并且比率之和等于 1.0。- singular_values_:ndarray 形状 (n_components,)
对应于每个选定组件的奇异值。奇异值等于 lower-dimensional 空间中
n_components
变量的 2 范数。- mean_:ndarray 形状 (n_features,)
Per-feature 经验平均值,根据训练集估计。
等于
X.mean(axis=0)
。- n_components_:int
组件的估计数量。当 n_components 设置为 ‘mle’ 或 0 到 1 之间的数字(svd_solver == ‘full’)时,此数字是根据输入数据估算的。否则,它等于参数 n_components,或者如果 n_components 为 None,则等于 n_features 和 n_samples 的较小值。
- n_features_:int
训练数据中的特征数。
- n_samples_:int
训练数据中的样本数。
- noise_variance_:浮点数
根据 Tipping 和 Bishop 1999 的概率 PCA 模型估计的噪声协方差。参见 C. Bishop 的“模式识别和机器学习”,第 12.2.1 页。 574 或 http://www.miketipping.com/papers/met-mppca.pdf 。需要计算估计的数据协方差和分数样本。
等于 X 的协方差矩阵的 (min(n_features, n_samples) - n_components) 个最小特征值的平均值。
- n_features_in_:int
拟合期间看到的特征数。
- feature_names_in_:ndarray 形状(
n_features_in_
,) 拟合期间看到的特征名称。仅当
X
具有全为字符串的函数名称时才定义。
参数:
属性:
参考:
对于 n_components == ‘mle’,此类使用以下方法:Minka, T. P..“PCA 维度的自动选择”。在 NIPS,第 598-604 页
从以下位置实现概率 PCA 模型:Tipping, M. E. 和 Bishop, C. M. (1999)。 “概率主成分分析”。皇家统计学会杂志:B 系列(统计方法),61(3),611-622。通过 score 和 score_samples 方法。
对于svd_solver == ‘arpack’,请参阅
scipy.sparse.linalg.svds
。对于svd_solver == ‘randomized’,请参见:Halko, N.、Martinsson, P. G. 和 Tropp, J. A. (2011)。 “寻找具有随机性的结构:构造近似矩阵分解的概率算法”。暹罗评论,53(2),217-288。并且Martinsson, P. G.、Rokhlin, V. 和 Tygert, M. (2011)。 “矩阵分解的随机算法”。应用和计算谐波分析,30(1),47-68.
例子:
>>> import numpy as np >>> from sklearn.decomposition import PCA >>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]]) >>> pca = PCA(n_components=2) >>> pca.fit(X) PCA(n_components=2) >>> print(pca.explained_variance_ratio_) [0.9924... 0.0075...] >>> print(pca.singular_values_) [6.30061... 0.54980...]
>>> pca = PCA(n_components=2, svd_solver='full') >>> pca.fit(X) PCA(n_components=2, svd_solver='full') >>> print(pca.explained_variance_ratio_) [0.9924... 0.00755...] >>> print(pca.singular_values_) [6.30061... 0.54980...]
>>> pca = PCA(n_components=1, svd_solver='arpack') >>> pca.fit(X) PCA(n_components=1, svd_solver='arpack') >>> print(pca.explained_variance_ratio_) [0.99244...] >>> print(pca.singular_values_) [6.30061...]
相关用法
- Python sklearn PowerTransformer.inverse_transform用法及代码示例
- Python sklearn PredefinedSplit用法及代码示例
- Python sklearn ParameterGrid用法及代码示例
- Python sklearn PatchExtractor用法及代码示例
- Python sklearn PolynomialFeatures用法及代码示例
- Python sklearn PassiveAggressiveClassifier用法及代码示例
- Python sklearn Product用法及代码示例
- Python sklearn PLSRegression用法及代码示例
- Python sklearn PrecisionRecallDisplay.from_predictions用法及代码示例
- Python sklearn PrecisionRecallDisplay用法及代码示例
- Python sklearn PrecisionRecallDisplay.from_estimator用法及代码示例
- Python sklearn Perceptron用法及代码示例
- Python sklearn PairwiseKernel用法及代码示例
- Python sklearn PLSSVD用法及代码示例
- Python sklearn PLSCanonical用法及代码示例
- Python sklearn Pipeline用法及代码示例
- Python sklearn PassiveAggressiveRegressor用法及代码示例
- Python sklearn PowerTransformer用法及代码示例
- Python sklearn PolynomialCountSketch用法及代码示例
- Python sklearn ParameterSampler用法及代码示例
- Python sklearn PartialDependenceDisplay.from_estimator用法及代码示例
- Python sklearn PoissonRegressor用法及代码示例
- Python sklearn jaccard_score用法及代码示例
- Python sklearn WhiteKernel用法及代码示例
- Python sklearn CalibrationDisplay.from_predictions用法及代码示例
注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.decomposition.PCA。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。