SVD中的特征向量

时间:2014-05-05 19:42:44

标签: matlab

我将从分类中的Matrix数据计算特征值和特征向量。

行代表不同的类,列代表功能。

所以,例如,如果我有

 X= 
  [2 3 4]  
  [3 2 4]   
  [4 5 6]  
  [8 9 0]

我必须使用SVD而不是PCA,因为矩阵不是正方形。

我所做的是:

  1. 计算每行的平均值。所以我有

    Mean=  
      M1  
      M2  
      M3  
      M4
    
  2. 使用均值

    对我的矩阵 X 进行减法
     Substract= 
    
    [2-M1 3-M1 4-M1]  
    [3-M2 2-M2 4-M2]   
    [4-M3 5-M3 6-M3]  
    [8-M4 9-M4 0-M4]
    
  3. 协方差矩阵=(Substract * Substract ^ t)/(4-1)

  4. [U,S,V] = svd(X)

  5. 我的所有步骤都是正确的吗?通过计算每行的平均值(作为类)?

    如果我想将数据投影到特征空间(用于降维),这是特征向量(U或V)?

1 个答案:

答案 0 :(得分:1)

无论你的矩阵是否是正方形,你都可以做PCA。实际上,您的矩阵很少是正方形,因为它的格式为n*p,其中n是观察数量,p是要素数量。因此,您可以使用MATLAB的pricomp函数

[W, pc] = princomp(data);

其中W是权重矩阵,pc是主要成分得分。您可以通过

查看投影到主要组件空间的数据
plot(pc(1,:),pc(2,:),'.'); 

以第一和第二主成分方向显示您的数据。