(完整word版)主成分分析法matlab实现,实例演示.docVIP

(完整word版)主成分分析法matlab实现,实例演示.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用 Matlab 编程实现主成分分析 概述 Matlab 言是当今国 上科学界 (尤其是自 控制 域 ) 最具影响力、也是 最有活力的 件。它起源于矩 运算,并已 展成一种高度集成的 算机 言。 它提供了 大的科学运算、 灵活的程序 流程、 高 量的 形可 化与界面 、与其他程序和 言的便捷接口的功能。 Matlab 言在各国高校与研究 位 起着重大的作用。主成分分析是把原来多个 量划 少数几个 合指 的一种 分析方法,从数学角度来看, 是一种降 理技 。 1.1 主成分分析计算步骤 ① 算相关系数矩 r11 r12 r1 p r21 r22 r2 p R r p1 r p 2 rpp (1) 在(3.5.3)式中, r ij ( , j=1 , ,?, ) 原 量的 xi 与 xj 之 的相关系 i 2 p 数,其 算公式 n (xki xi )( xkj x j ) rij k 1 n n (xki xi ) 2 (xkj x j ) 2 k 1 k 1 ( 2) 因 R 是 称矩 (即 r ij =r ji ),所以只需 算上三角元素或下三角元素即可。 ② 算特征 与特征向量 首先 解特 征方 程 I R 0 ,通 常用 雅可 比法( Jacobi)求 出特 征 i (i 1,2, , p) ,并使其按大小 序排列,即12, p 0 ;然后分 求 p eij2 出 于特征 i 的特征向量 ei (i 1,2, , p) 。 里要求 ei =1,即 1,其 j 1 eij 表示向量 ei 的第 j 个分量。 算主成分 献率及累 献率主成分 zi 的 献率 i (i 1,2, , p) p k k 1 累 献率 i k k 1 (i 1,2, , p) p k 1 k 一般取累 献率达 85 — 95% 的特征 1 , 2 , , m 所 的第一、第 二, ?,第 m(m≤ p)个主成分。 ④ 算主成分 荷 其 算公式 lij p( zi , x j ) i eij (i , j 1,2, , p) (3) 得到各主成分的载荷以后,还可以按照( 3.5.2)式进一步计算,得到各主成 分的得分 z11 z12 z1m z21 z22 z2 m Z zn1 zn 2 znm (4) 程序结构及函数作用 在软件 Matlab 中实现主成分分析可以采取两种方式实现:一是通过编程来 实现;二是直接调用 Matlab 种自带程序实现。下面主要主要介绍利用 Matlab 的 矩阵计算功能编程实现主成分分析。 2.1 程序结构 Cwprint.m 主函数 子函数 Cwstd.m Cwfac.m Cwscore.m 2.2 函数作用 Cwstd.m——用总和标准化法标准化矩阵 Cwfac.m——计算相关系数矩阵;计算特征值和特征向量;对主成分进行排 序;计算各特征值贡献率;挑选主成分(累计贡献率大于 85%),输出主成分个 数;计算主成分载荷 Cwscore.m——计算各主成分得分、综合得分并排序 Cwprint.m ——读入数据文件;调用以上三个函数并输出结果 源程序 3.1 cwstd.m 总和标准化法标准化矩阵 %cwstd.m, 用总和标准化法标准化矩阵 function std=cwstd(vector) cwsum=sum(vector,1); %对列求和 [a,b]=size(vector); %矩阵大小 ,a 为行数 ,b 为列数 for i=1:a for j=1:b std(i,j)= vector(i,j)/cwsum(j); end end 3.2 cwfac.m 计算相关系数矩阵 %cwfac.m function result=cwfac(vector); fprintf( 相关系数矩阵 :\n) std=CORRCOEF(vector) % 计算相关系数矩阵 fprintf( 特征向量 (vec) 及特征值 (val) : \n) [vec,val]=eig(std) % 求特征值 (val) 及特征向量 newval=diag(val) ; [y,i]=sort(newval) ; %对特征根进行排序,  (vec) y 为排序结果,  i 为索引 fprintf( 特征根排序: \n) for z=1:length(y) newy(z)=y(length(y)+1-z); end fprintf(%g\n,newy) rate=y/sum(y); fprintf(\n 贡献率: \n) newrate=newy/sum(newy) sumrate=0; newi=[];

文档评论(0)

137****7230 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档