我对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。我
完全糊涂了。
答案 0 :(得分:4)
是的,根据pca
帮助," X行对应于观察值和变量列。"
score
只是告诉您M
在主要组件空间中的表示。您需要coeff
的第一列。
numberOfDimensions = 5;
coeff = pca(A);
reducedDimension = coeff(:,1:numberOfDimensions);
reducedData = A * reducedDimension;
答案 1 :(得分:0)
我不同意上面的答案。
[coeff,score]=pca(A)
其中A有行作为观察,列作为要素。
如果A有3个特征和> 3个观察(假设为100)并且你想要2个维度的“特征”,比如矩阵B(B的大小是100X2)。你应该做的是:
B = score(:,1:2);