PCA相关

参考博客

matlab自带的实现方式

[COEFF,SCORE,latent,tsquare] = princomp(X)

在n行p列的数据集X上做主成分分析。X的每行表示一个样本的观测值,每一列表示特征变量。COEFF是一个p行p列的矩阵,每一列包含一个主成分的系数,列是按主成分变量递减顺序排列。(COEFF是X矩阵所对应的协方差阵V的所有特征向量组成的矩阵,即变换矩阵或称投影矩阵,COEFF每列对应一个特征值的特征向量,列的排列顺序是按特征值的大小递减排序)

返回的SCORE是对主分的打分,也就是说原X矩阵在主成分空间的表示。SCORE每行对应样本观测值,每列对应一个主成份(变量),它的行和列的数目和X的行列数目相同。

我们要的是由函数[pc,score,latent,tsquare] = princomp(ingredients)它所产生的pc和latent。由latent可以算出降维后的空间所能表示原空间的程度,只要这个累积的值大于95%就行了。

cumsum(latent)./sum(latent)  

ans = 0.86597

        0.97886  

              0.9996  

              1              

%由以上ans值可以看出前两个主成分就能表示原空间的97.886%,所以取pc中的前两列可

%做主成分变换矩阵tranMatrix = pc(:,1:2)。则从原来的4维空间降到2维空间。
%对任意一个原空间样本,例如a=(7 ,26 ,6 ,60)变到低维空间的表达式为a1 = a*tranMatrix。
%(当然你也可以取pc中的前三列,由原来的4维空间变到3维空间)
 

你可能感兴趣的:(信号处理)