Matlab实现PCA
在主成分分析(PCA)中,介绍了PCA的数学原理,其有用Matlab能够非常方便地对矩阵进行操作!
比方,用Matlab求多个样本的协方差矩阵、求矩阵的特征根和特征向量等。
以下介绍用Matlab实现PCA:
如果有4个样本A、B、C、D,每一个样本都是6维。
>> A=[1,2,3,4,5,6];
>> B=[1,3,5,7,9,9];
>> C=[2,3,4,6,7,8];
>> D=[3,4,6,7,8,9];
将这4个样本组合成一个矩阵Q,矩阵Q的每一行为一个样本。
>> Q=[A;B;C;D]
Q =
1 2 3 4 5 6
1 3 5 7 9 9
2 3 4 6 7 8
3 4 6 7 8 9
依据cov()函数,求训练样本的协方差矩阵W(注意W是对称的,也即W==W‘)
>> W=cov(Q)
W =
0.9167 0.6667 0.8333 0.6667 0.4167 0.6667
0.6667 0.6667 1.0000 1.0000 1.0000 1.0000
0.8333 1.0000 1.6667 1.6667 1.8333 1.6667
0.6667 1.0000 1.6667 2.0000 2.3333 2.0000
0.4167 1.0000 1.8333 2.3333 2.9167 2.3333
0.6667 1.0000 1.6667 2.0000 2.3333 2.0000
因为cov()函数是按行处理的,也即它觉得Q中每一行为一个样本,
所以假设Q写成Q=[A',B',C',D'](6*4的矩阵,每一列为一个样本),W将会为4*4的矩阵,显然不正确。
依据协方差矩阵求特征根v、特征向量d(d中每一列为特征根v相应的特征向量)
>> [d,v]=eig(W)
d =
-0.0338 0.4409 -0.3021 0.3507 -0.7491 0.1704
-0.1133 -0.8695 -0.2299 0.0334 -0.3427 0.2444
0.0490 0.1429 0.1773 -0.8342 -0.2871 0.4092
-0.5987 0.0439 0.5673 0.2998 0.0718 0.4720
-0.1319 0.1552 -0.6568 -0.0176 0.4782 0.5460
0.7796 -0.0563 0.2668 0.2998 0.0718 0.4720
v =
-0.0000 0 0 0 0 0
0 0.0000 0 0 0 0
0 0 0.0000 0 0 0
0 0 0 0.1169 0 0
0 0 0 0 1.1473 0
0 0 0 0 0 8.9024
假设要降到3维,那么依据特征根大小,选择前三个特征根相应的特征向量组合成6*3的投影矩阵----PCA投影矩阵!
Matlab实现PCA的更多相关文章
- 关于PCA的几何表示——MATLAB实现
关于PCA的一道练习题.这个折腾了好久...终于做出来像样的图,开始的时候忘记对原始数据标准化,怎么也不对.经过标准化之后,做的图看着还可以,有错误请指出! MATLAB代码PCA.m: clear ...
- PCA算法学习(Matlab实现)
PCA(主成分分析)算法,主要用于数据降维,保留了数据集中对方差贡献最大的若干个特征来达到简化数据集的目的. 实现数据降维的步骤: 1.将原始数据中的每一个样本用向量表示,把所有样本组合起来构成一个矩 ...
- 再谈协方差矩阵之主成分分析PCA
上次那篇文章在理论层次介绍了下协方差矩阵,没准很多人觉得这东西用处不大,其实协方差矩阵在好多学科里都有很重要的作用,比如多维的正态分布,再比如今天我们今天的主角——主成分分析(Principal Co ...
- 【数学建模】day10-主成分分析
0. 关于主成分分析的详细理解以及理论推导,这篇blog中讲的很清楚. 主成分分析是一种常用手段.这应该与因子分析等区别开来,重点在于理解主成分分析的作用以及什么情况下使用主成分分析,本文重点讲解如何 ...
- [ML] Feature Transformers
方案选择可参考:[Scikit-learn] 4.3 Preprocessing data 代码示范可参考:[ML] Pyspark ML tutorial for beginners 本篇涉及:Fe ...
- 机器学习笔记----四大降维方法之PCA(内带python及matlab实现)
大家看了之后,可以点一波关注或者推荐一下,以后我也会尽心尽力地写出好的文章和大家分享. 本文先导:在我们平时看NBA的时候,可能我们只关心球员是否能把球打进,而不太关心这个球的颜色,品牌,只要有3D效 ...
- PCA and kmeans MATLAB实现
MATLAB基础知识 l Imread: 读取图片信息: l axis:轴缩放:axis([xmin xmax ymin ymax zmin zmax cmin cmax]) 设置 x.y 和 ...
- MATLAB做主成分分析(PCA)
简单的主成分分析.第一次见识PCA,我的认识是,尽量用更少的维度来描述数据,以达到理想(虽不是最好,但是''性价比''最高)的效果. %% 主成分分析降维 clear; % 参数初始化 inputfi ...
- matlab自带princomp(PCA降维方式)
matlab 中自带的函数就不必怀疑. princomp:principal componet analysis (PCA). [COEFF,SCORE,latent,tsquare]=princom ...
随机推荐
- HDU 4709 Herding 几何题解
求全部点组成的三角形最小的面积,0除外. 本题就枚举全部能够组成的三角形,然后保存最小的就是答案了.由于数据量非常少. 复习一下怎样求三角形面积.最简便的方法就是向量叉乘的知识了. 并且是二维向量叉乘 ...
- oracle flashback 2
Flashback database After oracle 10g, oracle can rollback to an prior time by flashback databas ...
- Oracle性能分析7:创建索引
在创建索引时,我们往往希望可以预估索引大小,以评估对现有project环境的影响,我们也希望创建索引的过程可以最小化的影响我们正在执行的project环境,并能查看索引的状况. 预估索引大小 预估索引 ...
- Vertica数据库操作
删除主键(Vertica数据库的主键值并非唯一的): SELECT ANALYZE_CONSTRAINTS('fb_s.c_log'); 找到key名,再: ALTER TABLE fb_s.c_lo ...
- 将 Shiro 作为一个许可为基础的应用程序 五:password加密/解密Spring应用
考虑系统password的安全,眼下大多数系统都不会把password以明文的形式存放到数据库中. 一把会採取下面几种方式对password进行处理 password的存储 "编码" ...
- 在Java中使用MD5和BASE64
MD5: 在上一篇<Servlet的学习之Session(5)>中,为了能使获取的所有随机数都能有相同的位数,我们采用MD5获取随机数的消息摘要(或称数据指纹.数据摘要等等). MD5可以 ...
- Servlet的学习之Request请求对象(1)
在本篇中开始对Servlet中的HttpServletRequest请求对象进行学习,请求对象同响应对象一样,我们可以根据该对象中的方法获取例如请求行,请求头和请求实体数据的方法. 在本篇中先对Htt ...
- Appium TestNg Maven Android Eclipse java简单启动实例
环境准备 Eclipse + maven + appium + TestNg 确保已经在Eclipse 上面安装maven TestNg的插件 打开Eclipse,新建一个java项目,把项目转换成m ...
- Jrebel 6.2.1破解
个人微信:benyzhous,可以一起探讨 云盘下载链接: http://pan.baidu.com/s/1bnGzMUF 配置: -noverify -javaagent:/Users/chabab ...
- zabbix 主机名必须要能ping通
api01:/home/tomcat> cat /etc/hosts 127.0.0.1 localhost ::1 localhost localhost.localdomain localh ...