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

主成分分析PCA详解及MATLAB实现1 读取外部文件数据 loadgj txt 把原始保存在纯文本文件 gj txt 中的数据 读到 MATLAB 变量 gj 中 2 数据标准化 gj1 zscore gj 将原始数据 gj 进行 z score 标准化 3 计算相关系数矩阵 协方差矩阵 r corrcoef gj1 计算相关系数矩阵 协方差矩阵 因为原始数据 gj 已经标准化成新的数据 gj1 所以 gj1 的协方差矩阵就是相关系数矩阵 相关系数矩阵主对角线上都是 1 因为一个变量和自己的相关系数是 1 相关系数矩阵 r 里大多数数据

一、概念

(一)概念:

主成分分析:考察多个变量间相关性一种多元统计方法,研究如何通过少数几个主成分来揭示多个变量间的内部结构,即从原始变量中导出少数几个主成分,使它们尽可能多地保留原始变量的信息,且彼此间互不相关.通常数学上的处理就是将原来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_/

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也刚好是降序排列的,说明第一个样本得分最高,且原来就是按照降序排列的。








版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229775.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午3:54
下一篇 2026年3月16日 下午3:55


相关推荐

  • 警惕!勒索病毒DXXD 2.0版来袭,黑客称只能缴纳赎金无法破解

    警惕!勒索病毒DXXD 2.0版来袭,黑客称只能缴纳赎金无法破解

    2022年3月6日
    95
  • Latex中插图总结(一)

    Latex中插图总结(一)写在前面的话CSDN中的数据库保存是不是有问题,我之前写了很多的,存在草稿箱里的最后竟然没有在了。真是郁闷死个人。亏我写了这么多,以后写完要保存了。泪目。Latex的插图在Latex中使用插图一般有两种方式,一种是插入事先准备好的图片,另一种是使用Latex代码直接在文档中画图。我们一般常见的使用都是第一种,准备好图片,然后直接插入在我们文档当中。只有一些特殊情况需要用大量代码作图。插图功能不是有L

    2022年6月10日
    45
  • 如何比较两种方法的灵敏度和特异度

    如何比较两种方法的灵敏度和特异度如何比较两种方法的灵敏度和特异度转载自 https www mediecogroup com method topic article detail 152 ty methods https www mediecogroup com method topic article detail 152 ty methods 转载自 https www mediecogroup com

    2026年3月18日
    2
  • 您也使用托管C++吗?

    您也使用托管C++吗?

    2021年8月9日
    51
  • 计算机组成原理实验二:四位补码运算器

    计算机组成原理实验二:四位补码运算器实验内容与说明 本实验要求设计一个能够实现补码加法 加 1 左移 右移 直接传送等功能的四位补码运算器 图 1 为四位补码运算器的电路框图 图中 移位器具有左移 右移和直接传送功能 实验时 图 1 中的 R0 R1 R2 四位寄存器可直接调用元件库中的 4D 寄存器 74173 设计原理图时 74173 的 G1N G2N MN NN 和 CLR 管脚接地 四

    2026年3月26日
    2
  • pycharm系统环境变量未生效

    pycharm系统环境变量未生效利用 python 连接 oracle 数据库 安装 instantclien cx Oracle 后 设置环境变量 在命令行中可以执行 python 脚本 在 pycharm 中无法执行 找不到客户端的启动文件错误 在 RUN editconfig 设置中 可进行变量的配置 需要先执行对应文件 editconfig 灰色显示无法点击 在 pycharm 的对应文件执行后 点击 RUN 按下图执

    2026年3月27日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号