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投影矩阵!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值