主成分分析(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的更多相关文章

  1. 关于PCA的几何表示——MATLAB实现

    关于PCA的一道练习题.这个折腾了好久...终于做出来像样的图,开始的时候忘记对原始数据标准化,怎么也不对.经过标准化之后,做的图看着还可以,有错误请指出! MATLAB代码PCA.m: clear ...

  2. PCA算法学习(Matlab实现)

    PCA(主成分分析)算法,主要用于数据降维,保留了数据集中对方差贡献最大的若干个特征来达到简化数据集的目的. 实现数据降维的步骤: 1.将原始数据中的每一个样本用向量表示,把所有样本组合起来构成一个矩 ...

  3. 再谈协方差矩阵之主成分分析PCA

    上次那篇文章在理论层次介绍了下协方差矩阵,没准很多人觉得这东西用处不大,其实协方差矩阵在好多学科里都有很重要的作用,比如多维的正态分布,再比如今天我们今天的主角——主成分分析(Principal Co ...

  4. 【数学建模】day10-主成分分析

    0. 关于主成分分析的详细理解以及理论推导,这篇blog中讲的很清楚. 主成分分析是一种常用手段.这应该与因子分析等区别开来,重点在于理解主成分分析的作用以及什么情况下使用主成分分析,本文重点讲解如何 ...

  5. [ML] Feature Transformers

    方案选择可参考:[Scikit-learn] 4.3 Preprocessing data 代码示范可参考:[ML] Pyspark ML tutorial for beginners 本篇涉及:Fe ...

  6. 机器学习笔记----四大降维方法之PCA(内带python及matlab实现)

    大家看了之后,可以点一波关注或者推荐一下,以后我也会尽心尽力地写出好的文章和大家分享. 本文先导:在我们平时看NBA的时候,可能我们只关心球员是否能把球打进,而不太关心这个球的颜色,品牌,只要有3D效 ...

  7. PCA and kmeans MATLAB实现

    MATLAB基础知识 l  Imread:  读取图片信息: l  axis:轴缩放:axis([xmin xmax ymin ymax zmin zmax cmin cmax]) 设置 x.y 和  ...

  8. MATLAB做主成分分析(PCA)

    简单的主成分分析.第一次见识PCA,我的认识是,尽量用更少的维度来描述数据,以达到理想(虽不是最好,但是''性价比''最高)的效果. %% 主成分分析降维 clear; % 参数初始化 inputfi ...

  9. matlab自带princomp(PCA降维方式)

    matlab 中自带的函数就不必怀疑. princomp:principal componet analysis (PCA). [COEFF,SCORE,latent,tsquare]=princom ...

随机推荐

  1. Javascript/Jquery——简单定时器

    第一种方法: <%@ page language="java" contentType="text/html; charset=UTF-8"pageEnc ...

  2. JQuery - 点击图片显示大图

    效果: 目录结构: 代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="De ...

  3. python 默认编码( UnicodeDecodeError: 'ascii' codec can't decode)

    python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错UnicodeDecodeError: 'ascii' codec can't deco ...

  4. cell中button怎么得到对应cell的indexpath 以及关于UITableViewCellContentView的问题

    ============================================================ 博文原创,转载请声明出处 电子咖啡-专注于移动互联网 ============ ...

  5. Nginx 訪问日志增长暴增出现尖刀的具体分析

    前言:          Nginx日志里面Mobileweb_access.log增长特别大.一天上百兆.将近100W的訪问记录.依照我们眼下的规模,热点用户才500个左右.就算人人用手机app訪问 ...

  6. XML wsdl soap xslt xsl ide

    XML wsdl soap  xslt xsl ide 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn. ...

  7. Taking Pictures Using FireMonkey Interfaces

    http://docwiki.embarcadero.com/RADStudio/Seattle/en/Taking_Pictures_Using_FireMonkey_Interfaces

  8. Shell echo命令

    Shell echo命令 echo "It is a test" 这里的双引号完全可以省略 .显示变量 read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shel ...

  9. oracle在desc表时,name 和type列不能格式化问题(占位过长)

    今天玩Oracle的时候,遇到一个让人很无语的问题,我desc表的时候,总是发现name列和type 列占位太多, 无法很直观明白的显示出来各个列值,就像下面的样子: 这样让人很不舒服,当然,一看到列 ...

  10. 更改windows系统语言,改为英文