我对 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 还是 score 的第一列?
这第三个问题现在有点无关了。假设我们有一个矩阵A = rand(30,100)
,其中行是数据点,列是特征。现在我想降低特征向量的维数但保留所有数据点。
我怎样才能用 PCA 做到这一点?
当我这样做时,[coeff, score, latent, ~, explained] = pca(M);
系数的尺寸为 100x29,分数的尺寸为 30x29。我完全糊涂了。
是的,根据pca
帮助,“X 的行对应于观察值,列对应于变量。”
score
只是告诉你M
在主成分空间中的表示。您想要coeff
.
numberOfDimensions = 5;
coeff = pca(A);
reducedDimension = coeff(:,1:numberOfDimensions);
reducedData = A * reducedDimension;
Run Code Online (Sandbox Code Playgroud)