在matlab中编写(和使用)主成分分析

在matlab中编写(和使用)主成分分析,matlab,covariance,pca,dimensionality-reduction,Matlab,Covariance,Pca,Dimensionality Reduction,我(希望)获得一个矩阵,其中包含老鼠叫声的不同特征的数据(在超声波中)。变量包括开始频率、结束频率、持续时间等。观察结果将包括我录音中的所有老鼠叫声 我想用主成分分析法来分析我的数据,希望能将对这些调用的结构及其工作方式不重要的任何主成分解相关,使我能够对调用进行分组 我的问题是,虽然我对PCA的工作原理有了基本的了解,但我不了解更精细的点,包括如何在Matlab中实现这一点 我知道你应该标准化我的数据。我见过的所有方法都涉及通过减去平均值来调整平均值。然而,其他一些人也用标准差除以,或用N-1

我(希望)获得一个矩阵,其中包含老鼠叫声的不同特征的数据(在超声波中)。变量包括开始频率、结束频率、持续时间等。观察结果将包括我录音中的所有老鼠叫声

我想用主成分分析法来分析我的数据,希望能将对这些调用的结构及其工作方式不重要的任何主成分解相关,使我能够对调用进行分组

我的问题是,虽然我对PCA的工作原理有了基本的了解,但我不了解更精细的点,包括如何在Matlab中实现这一点

我知道你应该标准化我的数据。我见过的所有方法都涉及通过减去平均值来调整平均值。然而,其他一些人也用标准差除以,或用N-1的平方根(N为变量数)除以均值调整数据的转置

我知道通过标准化数据,你可以找到协方差矩阵,提取特征值和向量,比如使用eig(cov(…)。有些人使用svd(…)代替。我仍然不明白这是什么,为什么重要

我知道有不同的方法来实现PCA,但我不喜欢所有这些方法得到不同的结果

甚至还有一个pca(…)命令

在重建数据时,有些人将均值调整数据与主成分数据相乘,其他人则使用主成分数据的转置进行相乘

我只想通过绘制主成分图和数据图(去掉最不重要的主成分)来分析我的数据。我想知道这些特征向量的方差,它们代表了数据的总方差。我希望能够充分利用PCA可以让我出去的所有信息

有人能帮忙吗

=========================================================

此代码似乎是基于第20页的

但标准差在哪里?结果与实际情况有什么不同

B=zscore(X); 
[PC, D] = eig(cov(B));
D = diag(D);
cumsum(flipud(D)) / sum(D)
PC*B %(note how this says PC whereas above it says PC')
如果主成分表示为列,那么我可以通过找到最小的特征值并将其对应的特征向量列设置为一列零来移除最不重要的特征向量

如何使用pca(…)命令应用上述任一方法并获得相同的结果?有人能帮我解释一下吗(理想情况下,向我展示一下所有这些是如何达到同样的效果的)

B=zscore(X); 
[PC, D] = eig(cov(B));
D = diag(D);
cumsum(flipud(D)) / sum(D)
PC*B %(note how this says PC whereas above it says PC')