【scikit-learn】sklearn.decomposition.PCA 类:主成分分析

sklearn.decomposition.PCA(主成分分析,PCA)

PCA(Principal Component Analysis,主成分分析)是 sklearn.decomposition 提供的一种 线性降维技术,常用于 数据降维、特征选择、可视化噪声去除,广泛应用于 模式识别、图像处理、数据可视化 等领域。


1. PCA 作用

  • 用于降维:将高维数据映射到低维空间,保留数据的主要特征。
  • 数据压缩:通过选择主要的主成分,减少特征的数量,同时尽量保持数据的原始信息。
  • 特征选择:找出对数据最有用的特征(即主成分)。

2. PCA 代码示例

(1) 训练 PCA

from sklearn.decomposition import PCA
import numpy as np

# 生成数据(100 个样本,5 个特征)
X = np.random.rand(100, 5)

# 训练 PCA 模型,降到 2 维
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

print("降维后的数据形状:", X_pca.shape)

解释

  • n_components=2:将数据降到 2 维。
  • fit_transform(X):训练模型并将数据转换为主成分空间。

3. PCA 主要参数

PCA(n_components=2, whiten=False, svd_solver='auto', random_state=None)
参数说明
n_components主成分数(默认 None,保留所有成分,指定整数时表示降到指定维度)
whiten是否白化数据(默认 False,如果为 True,则使每个主成分的方差为 1)
svd_solverSVD 求解器'auto''full''arpack''randomized'
random_state随机种子(控制随机性,确保结果复现)

4. 选择最佳主成分数 (n_components)

import matplotlib.pyplot as plt

# 计算累积解释方差
pca = PCA().fit(X)
plt.plot(np.cumsum(pca.explained_variance_ratio_))
plt.xlabel("主成分数")
plt.ylabel("累计解释方差")
plt.title("PCA 解释方差")
plt.show()

解释

  • cumsum(pca.explained_variance_ratio_):显示不同主成分数量下,数据解释方差的累计值。
  • 根据“拐点”选择合适的 n_components

5. 查看每个主成分的方差贡献

print("各主成分的方差贡献比例:", pca.explained_variance_ratio_)

解释

  • explained_variance_ratio_:返回各主成分对数据方差的贡献比例,通常前几个主成分解释了数据的 大部分方差

6. PCA 结果可视化

import seaborn as sns

# 可视化降维后的数据
sns.scatterplot(x=X_pca[:, 0], y=X_pca[:, 1])
plt.title("PCA 降维结果")
plt.show()

解释

  • X_pca[:, 0]X_pca[:, 1]:可视化降到 2 维后的数据。

7. PCA 与数据重建

# 使用 PCA 进行降维并重建数据
X_reconstructed = pca.inverse_transform(X_pca)

print("原始数据与重建数据的差异:", np.sum((X - X_reconstructed) ** 2))

解释

  • inverse_transform:使用主成分反向映射回原始数据空间。
  • 误差较小时,表示降维后的数据较好地保留了信息

8. PCA vs. KernelPCA

方法适用情况主要区别
PCA适用于线性数据线性降维,数据仍然是正交的
KernelPCA适用于非线性数据通过核技巧进行非线性降维

示例

from sklearn.decomposition import KernelPCA

# 核 PCA(使用 RBF 核)
kpca = KernelPCA(n_components=2, kernel="rbf")
X_kpca = kpca.fit_transform(X)

print("核 PCA 降维后的数据形状:", X_kpca.shape)

9. 适用场景

  • 数据可视化(如将高维数据降到 2 维或 3 维,便于可视化)。
  • 降维与压缩(如减少特征数量,去除噪声)。
  • 特征选择(如保留方差贡献较大的特征,去除冗余特征)。
  • 数据预处理(如在机器学习中使用 PCA 降维来提高模型效率和性能)。

10. 结论

  • PCA 是一种线性降维方法,适用于特征选择、数据压缩、可视化等任务,通过主成分分析可以 减少特征维度,同时尽量保留数据的方差。它特别适用于 高维数据的可视化和降噪
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值