首页 文章

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

提问于
浏览
1

我对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 . 现在我的困惑开始了 .

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

  • 我应该选择coeff或得分的第一列吗?

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

我怎么能用PCA做到这一点?

当我做 [coeff, score, latent, ~, explained] = pca(M); 时,coeff的维度为100x29,得分大小为30x29 . 我完全糊涂了 .

2 回答

  • 4
    • 是的,根据 pca 帮助,"Rows of X correspond to observations and columns to variables."

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

    numberOfDimensions = 5;
    coeff = pca(A);
    reducedDimension = coeff(:,1:numberOfDimensions);
    reducedData = A * reducedDimension;
    
  • 0

    我不同意上面的答案 .

    [coeff,score]=pca(A)
    

    其中A有行作为观察,列作为要素 .

    如果A有3个特征和3个观察值(比方说100)并且你想要2个维度的“特征”,比如矩阵B(B的大小是100X2) . 你应该做的是:

    B = score(:,1:2);
    

相关问题