在 MATLAB 中使用 PCA 降低特征维度
Reducing dimensionality of features with PCA in MATLAB
我对 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);
然后
coeff 的尺寸为 100x29,score 的尺寸为 30x29。我是
完全糊涂了。
是的,根据pca
帮助,"Rows of X correspond to observations and columns to variables."
score
只是告诉你M
在主成分space中的表示。您想要 coeff
.
的第一列
numberOfDimensions = 5;
coeff = pca(A);
reducedDimension = coeff(:,1:numberOfDimensions);
reducedData = A * reducedDimension;
我不同意上面的回答。
[coeff,score]=pca(A)
其中 A 的行作为观察值,列作为特征。
如果 A 有 3 个特征和 >3 个观察值(假设 100)并且您想要 2 维的 "feature",例如矩阵 B(B 的大小为 100X2)。你应该做的是:
B = score(:,1:2);
我对 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);
然后 coeff 的尺寸为 100x29,score 的尺寸为 30x29。我是 完全糊涂了。
是的,根据
pca
帮助,"Rows of X correspond to observations and columns to variables."score
只是告诉你M
在主成分space中的表示。您想要coeff
. 的第一列
numberOfDimensions = 5; coeff = pca(A); reducedDimension = coeff(:,1:numberOfDimensions); reducedData = A * reducedDimension;
我不同意上面的回答。
[coeff,score]=pca(A)
其中 A 的行作为观察值,列作为特征。
如果 A 有 3 个特征和 >3 个观察值(假设 100)并且您想要 2 维的 "feature",例如矩阵 B(B 的大小为 100X2)。你应该做的是:
B = score(:,1:2);