%% test for princomp(Principal Component Analysis)

% 关于matlab中princomp的使用说明讲解小例子 by faruto
% 能看懂本程序及相关注释讲解的前提是您对PCA有一定的了解~O(∩_∩)O
% 2009.10.27
clear;
clc
%% load cities data
load cities
% whos
%   Name             Size         Bytes  Class
%   categories       9x14           252  char array
%   names          329x43         28294  char array
%   ratings        329x9          23688  double array
%% box plot for ratings data
% To get a quick impression of the ratings data, make a box plot
figure;
boxplot(ratings,'orientation','horizontal','labels',categories);
grid on;
print -djpeg 1;

%% pre-process
stdr = std(ratings);
sr = ratings./repmat(stdr,329,1);
%% use princomp 
[coef,score,latent,t2] = princomp(sr);
%% 输出参数讲解

% coef:9*9
% 主成分系数:即原始数据线性组合生成主成分数据中每一维数据前面的系数.
% coef的每一列代表一个新生成的主成分的系数.
% 比如你想取出前三个主成分的系数,则如下可实现:pca3 = coef(:,1:3);

% score:329*9
% 字面理解:主成分得分
% 即原始数据在新生成的主成分空间里的坐标值.

% latent:9*1
% 一个列向量,由sr的协方差矩阵的特征值组成.
% 即 latent = sort(eig(cov(sr)),'descend');
% 测试如下:
% sort(eig(cov(sr)),'descend') =
%     3.4083
%     1.2140
%     1.1415
%     0.9209
%     0.7533
%     0.6306
%     0.4930
%     0.3180
%     0.1204
% latent =
%     3.4083
%     1.2140
%     1.1415
%     0.9209
%     0.7533
%     0.6306
%     0.4930
%     0.3180
%     0.1204

% t2:329*1
% 一中多元统计距离,记录的是每一个观察量到中心的距离
%% 如何提取主成分,达到降为的目的
% 通过latent,可以知道提取前几个主成分就可以了.
figure;
percent_explained = 100*latent/sum(latent);
pareto(percent_explained);
xlabel('Principal Component');
ylabel('Variance Explained (%)');
print -djpeg 2;

% 图中的线表示的累积变量解释程度.
% 通过看图可以看出前七个主成分可以表示出原始数据的90%.
% 所以在90%的意义下只需提取前七个主成分即可,进而达到主成分提取的目的.
%% Visualizing the Results

% 结果的可视化
figure;
biplot(coef(:,1:2), 'scores',score(:,1:2),... 
'varlabels',categories);
axis([-.26 1 -.51 .51]);
print -djpeg 3;

% 横坐标和纵坐标分别表示第一主成分和第二主成分
% 红色的点代表329个观察量,其坐标就是那个score
% 蓝色的向量的方向和长度表示了每个原始变量对新的主成分的贡献,其坐标就是那个coef.

关于matlab中princomp的使用说明讲解相关推荐

  1. matlab中利用princomp实现PCA降维

    matlab中利用princomp实现PCA降维 在matlab中有函数princomp可以实现数据的降维,本文主要说明该函数的用法. PCA的作用: PCA(主成分分析法),主要用来对数据进行降维, ...

  2. MATLAB中神经网络train函数使用说明

    MATLAB中神经网络train( )函数使用说明 函数的语法格式如下: [net, tr]=train(net, P, T, Pi, Ai): train( )函数用于训练创建好的感知器网络,事实上 ...

  3. matlab 中的三次样条插值函数spline使用说明

    GSS第一篇博客文章 DA matlab 中的三次样条插值函数spline使用说明 spline(x,y,xx) matlab 中的三次样条插值函数spline使用说明 spline(x,y,xx) ...

  4. Matlab中linkage函数讲解

    Matlab中linkage函数说明 一.参考资料 1.1 matlab中的linkage和cluster函数 1.2 官方linkage手册 二.通俗讲解 2.1 代码 data = [1 2;1 ...

  5. matlab中find函数的使用说明

    matlab中如何统计一个矩阵M中零的个数 size(find(M==0),1) 原文:http://blog.sina.com.cn/s/blog_707b64550100rbh3.html fin ...

  6. matlab函数插值是什么意思,Matlab中插值函数汇总和使用说明

    注:该文从链接地址http://blog.sciencenet.cn/blog-457143-679275.html转载. MATLAB中的插值函数为interp1,其调用格式为:  yi= inte ...

  7. matlab中fval函数,收集整理Matlab中的linprog函数使用说明 | 学步园

    linprog函数是用来求解线性规划问题,其中,f,x,b,beq,lb,ub为向量,A,Aeq为矩阵. a).x=linprog(f,A,b) 功能:求解最小化问题:min f*x,条件:A*x≤ ...

  8. 收集整理Matlab中的linprog函数使用说明

    linprog函数是用来求解线性规划问题,其中,f,x,b,beq,lb,ub为向量,A,Aeq为矩阵. a).x=linprog(f,A,b) 功能:求解最小化问题:min f*x,条件:A*x ≤ ...

  9. matlab中的single是什么类型_MATLAB 中cell数据类型的使用方法

    讲真,我觉得最好的说明文档是MATLAB 帮助文档.但是由于朋友们可能看英文费劲,或者更喜欢看我的用"人话"讲解MATLAB用法.下面我从一个MATLAB深度用户的角度来讲解一下M ...

最新文章

  1. 一篇文章了解Github和Git教程-AndroidStudio上传Github教程
  2. html div阴影向上,css3阴影向上缓动样式
  3. java四种访问权限
  4. 华为笔试题-磁盘容量排序
  5. mysql备份到制定目录_写一个脚本定时自动备份mysql到指定目录
  6. English trip EM2-LP-2A Around the world Teacher:Taylor
  7. Sandcastle Help File Builder(.NET帮助文档工具)的版本选择心得——支持VS2010至VS2015,高版本项目文件问题...
  8. oracle rac实例停止,oracle rac启停命令使用实例
  9. 解决SVG animation 在IE中不起作用
  10. 数据采集及采集工具八爪鱼的使用
  11. 25年面试官首次揭秘——世界500强面试题
  12. ai自动生成字幕软件有哪些?自动生成字幕软件推荐!
  13. dubbo暴露出HTTP服务
  14. Linux基础教程 (第二版) 第2版
  15. HTML基础笔记——head标签
  16. 前端+后端项目 - 论坛信息管理系统(Web+servlet+MySQL+JDBC)
  17. Flutter访问webservice
  18. 升级!鹏业云计价i20(西藏)软件V11.0.27版本
  19. lsdyna如何设置set中的node_list_如何监视 DOM 树的变动?
  20. 如何免费学习Python?分享我自己的学习经验

热门文章

  1. gva explaination
  2. ieee文章作者对不齐怎么办呢?
  3. 能力的齿轮每一次卡不上点的时候都是下一个批评的开始
  4. 快速编辑 Shell 命令行
  5. maven+nexus搭建maven仓库
  6. tomcat日志切割-logrotate
  7. Django 1.10中更新modules同步数据库
  8. 360漏洞更新后系统进不去
  9. Hadoop2.6.0子项目hadoop-mapreduce-examples的简单介绍
  10. SQL SERVER 2008清理日志