主成分分析法原理与MATLAB实现 1:主成分分析原理:

1:主成分分析原理:

主成分分析法是利用降维的思想,把多指标转化为少数几个综合指标(即主成分),其中每个主成分都能够反映原始变量的大部分信息,且所含信息互不重复。这种方法在引进多方面变量的同时将复杂因素归结为几个主成分,使问题简单化,同时得到的结果更加科学有效的数据信息。例如,做一件上衣需要测量很多尺寸,如身高,袖长,腰围,胸围,肩宽等十几项指标,但是厂家不可能把尺寸型号分这么多,而是从这十几种指标中综合成几个少数的综合指标作为分类型号,例如综合成反映身高,反映胖瘦和反应特体的三项指标,这就是主成分的思想。主要的方法有特征值分解,SVD(奇异值分解)和NMF(非负矩阵分解);

2:步骤:

参考:http://wiki.mbalib.com/wiki/%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90%E6%B3%95


第一步采用的是中心化标准化,即元素值减去均值除以标准差,得到的结果服从标准正态分布;

3:matlab代码实现:

[plain]  view plain  copy
  1. x=[1.2,3,-1.1,17;  
  2.     1.5,5,-3,22;  
  3.     1.3,4.0,-2,19;  
  4.     0.7,3,-2.3,11  
  5.     1,4,-1.2,20.8];  
  6. stdr=std(x);                %求各变量的标准差;  
  7. [n,m]=size(x);               %矩阵的行与列  
  8. sddata=x./stdr(ones(n,1),:);         %标准化变换  
  9. [p,princ,egenvalue]=princomp(sddata);  %调用主成分  
  10. p=p(:,1:3);                          %输出前3主成分系数;  
  11. sc=princ(:,1:3);                       %前3主成分量;  
  12. egenvalue;                              %相关系数矩阵的特征值,即各主成分所占比例;  
  13. per=100*egenvalue/sum(egenvalue);       %各个主成分所占百分比;  

运行结果:

前3主成分系数:


特征值矩阵:


扫描二维码关注公众号,回复: 1023549 查看本文章

百分比:

   

所以前3主成分就是:z1=0.5403x1+0.5792x2-0.2966x3+0.5334x4;  z2=0.1824x1-0.1325x2+0.8686x3+0.4419x4;  z3=0.802x1-0.4998x2-0.0838x3-0.3162x4;

上述数据就可以按照这前3主成分进行描述了。


猜你喜欢

转载自blog.csdn.net/it_beecoder/article/details/80365633