【问题标题】:Reducing dimensionality of features with PCA in MATLAB在 MATLAB 中使用 PCA 降低特征的维数
【发布时间】:2015-08-19 18:50:48
【问题描述】:

我对 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); 然后 coeff 的尺寸为 100x29, score 的尺寸为 30x29。我是 完全糊涂了。

【问题讨论】:

    标签: matlab pca


    【解决方案1】:

    我不同意上面的答案。

    [coeff,score]=pca(A)
    

    其中 A 将行作为观察值,将列作为特征。

    如果 A 有 3 个特征和 >3 个观察值(假设为 100)并且您想要二维的“特征”,例如矩阵 B(B 的大小为 100X2)。你应该做的是:

    B = score(:,1:2);
    

    【讨论】:

      【解决方案2】:
      1. 是的,根据pca 帮助,“X 的行对应于观察值,列对应于变量。”

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

      3. numberOfDimensions = 5;
        coeff = pca(A);
        reducedDimension = coeff(:,1:numberOfDimensions);
        reducedData = A * reducedDimension;
        

      【讨论】:

      • @ribond 我应该在应用 PCA(M 列上的 z 得分)之前应用 z 得分(零均值,单位方差)还是应该在将特征向量输入机器学习分类器之前应用它(每个特征向量的 z 分数)?
      猜你喜欢
      • 2014-01-02
      • 1970-01-01
      • 2017-08-05
      • 1970-01-01
      • 2017-08-19
      • 2019-01-10
      • 1970-01-01
      • 2013-03-06
      • 1970-01-01
      相关资源
      最近更新 更多