PCA算法以及Python,R实现

本文详细介绍了PCA(主成分分析)算法的流程及其背后的数学原理,包括如何将高维数据映射到低维空间,同时确保保留最多的数据特性。此外,还提供了Python实现PCA的具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. PCA(Principal Component Analysis)算法流程
设有m条n维数据,其中每条数据有n个特征。
1)转置----将原始数据按列组成n行m列矩阵X
2)中心化----将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
3)求出协方差矩阵M
4)求出协方差矩阵M的特征值及对应的特征向量
5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
6)Y=PX即为降维到k维后的数据
2. 数学思想
PCA 是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,并期望在所投影的维度上数据的方差最大,以此使用较少的数据维度,同时保留住较多的原数据点的特性。
通俗的理解,如果把所有的点都映射到一起,那么几乎所有的信息(如点和点之间的距离关系)都丢失了,而如果映射后方差尽可能的大,那么数据点则会分散开来,以此来保留更多的信息
也就是说,方差越大数据的表征能力越强------方差越大,数据越分散,信息保留越多
e.g. 给你两组数据,一组数据基本集中于某个点,另一组数据零零散散的,你认为哪个数据更好?一般都认为后者更好,因为前者可能是数据太少了,数据都集中于某一个点,这样的数据训练出来的模型泛化能力很差,后者的数据可以认为比较样本空间覆盖度高,训练出来的模型泛化能力更强。

3. Python实现
from sklearn.decomposition import PCA
from sklearn import datasets
import matplotlib.pyplot as plt
### 对x需要预处理,即去中心化,在PCA包中没有这一步骤
digits = datasets.load_digits()
### x 为m*n矩阵,每一行有n个特征,在PCA包里有转置,不需要自己转置
x = digits.data
y = digits.target    
pca=PCA(n_components=10)
### PCA只针对特征处理,不需要针对target部分
pca.fit(x)

plt.figure()
plt.plot(pca.explained_variance_, 'k', linewidth=2)
plt.xlabel('n_components', fontsize=16)
plt.ylabel('explained_variance_', fontsize=16)
plt.show()
结果:


4. R实现

以后会补上的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值