PCA的MATLAB实现

通常有两种方式 1. 直接调用PCA函数princomp 2. 使用SVD分解,调用eig

1. 直接调用PCA函数princomp

    princomp的输入是原始数据。princomp会自动进行中心化。

    [COEFF,SCORE,LATENT]=princomp(X)

    X: 原始输入数据 Rows of X correspond to observations, columns to variables.

    LATENT: 特征向量

    COEFF: PCA的映射矩阵,eigen vectors, 列是按主成分变量递减的顺序排列

    SCORE: 将输入data X映射到生成的PCA空间,得到的PCA coefficients

    得到特征向量后,可以进行映射

    (1)将数据从原始空间映射到PCA空间

             score=bsxfun(@minus,X,mean(X,1))*COEFF (X为测试集)

    (2)将PCA coeffeicients映射到原始数据空间

            x=bsxfun(@plus,score*inv(COEFF),mean(X,1))

例子:

(1)X=rand(2,4)

X =

    0.1309    0.1536    0.0091    0.6090
    0.1892    0.0289    0.5965    0.9189

(2)[COEFF,SCORE,LATENT]=princomp(X)

COEFF =

    0.0860    0.1356    0.7219    0.6731
   -0.1839    0.1807   -0.6653    0.7006
    0.8660   -0.4349   -0.1793    0.1693
    0.4569    0.8717   -0.0638   -0.1655


SCORE =

   -0.3391         0         0         0
    0.3391         0         0         0


LATENT =

    0.2300
         0
         0
         0

(3) Project to PCA space

  alpha=inv(COEFF)*(X(1,:)'-mean(X,1)')

  alpha =

   -0.3391
   -0.0000
    0.0000
    0.0000

  (4) Project back to original space

  mean(X,1)'+COEFF*alpha

  ans =

    0.1309
    0.1536
    0.0091
    0.6090

2. 使用SVD分解,调用eig

 

阅读更多
想对作者说点什么? 我来说一句

KPCA用于TE过程的程序(matlab)

2015年09月08日 2KB 下载

PCA故障诊断matlab实现

2014年04月30日 342KB 下载

没有更多推荐了,返回首页

不良信息举报

PCA的MATLAB实现

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭