主成分分析PCA详解及MATLAB实现

一、概念

(一)概念:

主成分分析:考察多个变量间相关性一种多元统计方法,研究如何通过少数几个主成分来揭示多个变量间的内部结构,即从原始变量中导出少数几个主成分,使它们尽可能多地保留原始变量的信息,且彼此间互不相关.通常数学上的处理就是将原来P个指标作线性组合,作为新的综合指标。
在这里插入图片描述

(二)原理步骤总结(前4步最重要)

1、标准化后的矩阵Z;
2、对标准化矩阵Z求相关系数矩阵;
3、求特征向量和特征值,贡献率;
4、根据贡献率降维,确定主成分,(X-m)×P即为降维到k维后的数据;
5、对k个主成分进行评价。

二、举例,以下面的数据为例:

在这里插入图片描述
列上一共有30个地区,即30个变量;行上每个变量有10个特征xi(i从1到10),即10维。

1、读取外部文件数据

完整数据文件下载地址:https://download.csdn.net/download/weixin_40857506/33474933

load gj.txt     %把原始保存在纯文本文件gj.txt中的数据,读到MATLAB变量gj中

在这里插入图片描述

2、数据标准化

gj1=zscore(gj);  %将原始数据gj进行z-score 标准化,为什么要标准化以及标准化方法见博主上一篇文章

在这里插入图片描述

3、计算相关系数矩阵(协方差矩阵)

r=corrcoef(gj1); %计算相关系数矩阵(协方差矩阵)
%r=cov(gj1); %计算相关系数矩阵(协方差矩阵),两种方式计算结果相同

因为有10个特征,所以相关系数矩阵(协方差矩阵)是10维的,协方差矩阵计算公式如下:在这里插入图片描述
在这里插入图片描述
因为原始数据gj已经标准化成新的数据gj1,所以gj1的协方差矩阵就是相关系数矩阵,相关系数矩阵主对角线上都是1,因为一个变量和自己的相关系数是1。相关系数矩阵r里大多数数据都是大于0.6的,说明原始变量之间的相关性很强,

下面利用相关系数矩阵r进行主成分分析,vec1的列为r的特征向量,即主成分的系数

4、计算特征向量、特征值及贡献率

[vec1,lambda,rate]=pcacov(r);%vec1为r的特征向量组成的矩阵,lambda为r的特征值组成的向量,rate为各个主成分的贡献率

在这里插入图片描述
Vec1中每一列就是一个特征向量,就是yk1,yk2,……,ykn
在这里插入图片描述
在这里插入图片描述

5、计算主成分

mean_gj1=mean(gj1);%求样本标准化后数据的均值
[Row Col]=size(mean_gj1);%获取样本标准化后数据的行和列
temp_gj1=repmat(mean_gj1,Row,1);%将均值由10行4列扩展到30行10列
SCORE=(gj1-temp_gj1)*vec1;%样本(标准化后)的主成分
pca_gj=vec1(:,1:4);%取主成分的前4列

在这里插入图片描述
在这里插入图片描述
Row=30, Col=10;
在这里插入图片描述
在这里插入图片描述

6、计算主成分得分

df=gj1*vec1(:,1:4); %计算30个样本前四个主成分的得分 
tf=df*rate(1:4)/100;%计算综合得分
[stf,ind]=sort(tf,'descend'); %sort就是排序的,把得分按照从高到低的次序排列

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们发现tf=stf,同时ind也刚好是降序排列的,说明第一个样本得分最高,且原来就是按照降序排列的。

  • 10
    点赞
  • 116
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值