用Python的sklearn库进行PCA(主成分分析)

在python的sklearn的库里面集成很多机器学习算法的库,其中也包括主成分分析的方法。

1.PCA算法的原理:

PCA主要是用来数据降维,将高纬度的特征映射到低维度的特征,加快机器学习的速度。比如在三维空间里面有一个薄饼状的三维物体,由于薄饼的厚度相对于薄饼的直径要小很多很多,故我们在平时的时候就说这个薄饼是圆的,而不说它的是圆柱的,这就是无意识中把描述薄饼的特征从三维降到二维了。(由于学识疏浅,这个例子可能不是特别恰当,还请谅解)。

下面看这个图片(该图片来自台湾大学李宏毅老师的ppt):


  在这个图片中,我们用两个特征,一个是attack,一个是defense来描述样本。但是如下图所示,我们作了两条线,可以看出在右边这条线上有较大的方差,而左边这条线的方差比较小,我们知道,方差越大,所包含的信息就越多。那么如何把这两个特征进行降维呢,降维要尽可能保持原始数据的信息,故要取使方差最大的一个维度(本例中从二维降到一维)。假设右边这条线的方差最大,我们就可以把这条线所在的直线当作降维后的一个维度。也就是二维降到一维后,这个一维空间的x轴所在的位置。那么这个降维后的x轴代表着什么呢?在本例中

### 使用sklearnPython中实现主成分分析PCA) 为了利用 `sklearn` 执行主成分分析 (PCA),需先加载必要的 Python 模块,包括用于数值计算的 NumPy 和数据操作的 Pandas。此外,还需引入专门的数据预处理工具和 PCA 类本身: ```python import numpy as np import pandas as pd from sklearn.preprocessing import StandardScaler from sklearn.decomposition import PCA ``` 接着,应准备待分析的数据集。这通常涉及从文件读取数据,并选取合适的列作为特征矩阵的一部分[^2]。 对于实际应用中的 PCA 实现,标准化输入数据是一个重要的前置步骤。这是因为不同尺度上的变量会影响最终的结果。通过 `StandardScaler()` 可以完成这一过程: ```python scaler = StandardScaler() X_scaled = scaler.fit_transform(X) ``` 创建 PCA 对象时可以指定所需的参数,比如要保留的主要分量数量 n_components 或者解释方差比例 threshold 等。这里展示了一个简单的例子,在该实例化过程中并未特别设定这些选项,默认情况下会返回所有可能的主成分[^1]: ```python pca = PCA() principalComponents = pca.fit_transform(X_scaled) ``` 最后一步是评估所获得的主成分的有效性和贡献度。可以通过访问属性 `.explained_variance_ratio_` 来查看各个主成分占总变异性的百分比;也可以绘制累积曲线来决定最佳维度数目的选择。 ```python print(pca.explained_variance_ratio_) plt.plot(np.cumsum(pca.explained_variance_ratio_)) plt.xlabel('Number of Components') plt.ylabel('Cumulative Explained Variance'); ``` 值得注意的是,早期版本的 scikit-learn 中存在名为 `RandomizedPCA` 的类,它提供了快速近似 SVD 分解的方式来进行降维。然而自 v0.19 版本之后已被移除并建议改用常规的 `PCA` 方法[^3]。
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值