1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 主成分分析PCA详解及MATLAB实现

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

时间:2021-01-19 01:46:53

相关推荐

主成分分析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、读取外部文件数据

完整数据文件下载地址:/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也刚好是降序排列的,说明第一个样本得分最高,且原来就是按照降序排列的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。