numpy实现鸢尾花数据集PCA降维

PCA降维过程

在前面的一篇博客中我已经从数学角度解释了PCA降维的原理,我们从中也可以得到PCA降维的过程
1)将原始数据做转置运算,每一行代表一个维度
2)每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
3)得到原始数据的协方差矩阵
4)求出协方差矩阵的特征值及对应的特征向量的单位向量
5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
6)用上面得到矩阵P和标准化后数据相乘,即可得到降维到k维后的数据

数据集

数据集我们使用sklearn库中的iris数据集,数据集中的每个样本有4个特征参数

原始数据格式:
5.1, 3.5, 1.4, 0.2
4.9, 3.0, 1.4, 0.2
4.7, 3.2, 1.3, 0.2
4.6, 3.1, 1.5, 0.2
5.0, 3.6, 1.4, 0.2
5.4, 3.9, 1.7, 0.4
4.6, 3.4, 1.4, 0.3
5.0, 3.4, 1.5, 0.2
4.4, 2.9, 1.4, 0.2
4.9, 3.1, 1.5, 0.1

numpy实现PCA降维

加载数据集

数据我们使用sklearn库中的iris中的数据集,所以需要导入sklearn库

   data = datasets.load_iris()["data"]
   print(data)

我们看一下加载进来的数据

[[ 5.1  3.5  1.4  0.2]
 [ 4.9  3.   1.4  0.2]
 [ 4.7  3.2  1.3  0.2]
 [ 4.6  3.1  1.5  0.2]
 [ 5.   3.6  1.4  0.2]
 [ 5.4  3.9  1.7  0.4]
 ...
  [ 6.7  3.3  5.7  2.5]
 [ 6.7  3.   5.2  2.3]
 [ 6.3  2.5  5.   1.9]
 [ 6.5  3.   5.2  2. ]
 [ 6.2  3.4  5.4  2.3]
 [ 5.9  3.   5.1  1.8]]
数据标准化

原始数据每一列是同一个维度特征,在标准化时候我们需要的也是对维度进行数据标准化处理,所以需要按列取数据,另外因为后面我们需要计算协方差,所以对数据进行标准化方式是去均值

 #axis = 0,按列取值求均值
 mean_vector=np.mean(data,axis=0)
 print("均值向量为:%s\n标准化数据:%s"% (mean_vector,data - mean_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值