在 MATLAB 中使用 PCA 降低特征的维数

mac*_*ery 1 matlab pca

我对 PCA 完全困惑。我有一个大小为 90x60x12x350 的 4D 图像。这意味着每个体素都是一个大小为 350(时间序列)的向量。

现在我将 3D 图像 (90x60x12) 分成立方体。所以假设一个立方体包含 n 个体素,所以我有 n 个大小为 350 的向量。我想将此n向量减少到只有一个向量,然后计算所有立方体的所有向量之间的相关性。

因此,对于一个立方体,我可以构建矩阵M,我只是把每个像素后对方,即M = [v1 v2 v3 ... vn]每个v的大小为350。

现在我可以通过使用[coeff, score, latent, ~, explained] = pca(M);和采用第一个组件在 Matlab 中应用 PCA 。现在我的困惑开始了。

  1. 我应该转置矩阵M,即PCA(M')

  2. 我应该选择 coeff 还是 score 的第一列?

  3. 这第三个问题现在有点无关了。假设我们有一个矩阵A = rand(30,100),其中行是数据点,列是特征。现在我想降低特征向量的维数但保留所有数据点。

    我怎样才能用 PCA 做到这一点?

    当我这样做时,[coeff, score, latent, ~, explained] = pca(M);系数的尺寸为 100x29,分数的尺寸为 30x29。我完全糊涂了。

rlb*_*ond 5

  1. 是的,根据pca帮助,“X 的行对应于观察值,列对应于变量。”

  2. score只是告诉你M在主成分空间中的表示。您想要coeff.

  3. numberOfDimensions = 5;
    coeff = pca(A);
    reducedDimension = coeff(:,1:numberOfDimensions);
    reducedData = A * reducedDimension;
    
    Run Code Online (Sandbox Code Playgroud)