使用 MATLAB 中的 PCA 函数对 Yale 人脸数据集进行降维并观 察前 20 个特征向量所对应的图像
首先,我们需要加载 Yale 人脸数据集。我们可以使用 load 命令来加载数据集:
load('Yale_64x64.mat');
该命令将加载一个名为 fea 的矩阵,其中包含了 165 图像的特征向量和一个名为 gnd 的向量,其中包含了每个图像的标签。每个特征向量都是一个 4096 维的向量,对应一个 64x64 的灰度图像。
接下来,我们可以使用 pca 函数对数据进行降维。我们可以指定要保留的主成分数量,也可以指定要保留的方差比例。在这个例子中,我们将保留前 20 个主成分:
[coeff, score, latent] = pca(fea, 'NumComponents', 20);
该命令将返回一个名为 coeff 的矩阵,其中包含了前 20 个主成分的特征向量。我们还将返回一个名为 score 的矩阵,其中包含了每个图像在这些主成分上的投影。最后,我们还将返回一个名为 latent 的向量,其中包含了每个主成分所解释的方差比例。
最后,我们可以使用 imshow 函数来显示前 20 个特征向量所对应的图像:
for i = 1:20
subplot(4, 5, i);
imshow(reshape(coeff(:, i), [64, 64]), []);
end
该命令将在一个 4x5 的图像网格中显示前 20 个特征向量所对应的图像。reshape 函数用于将特征向量重新转换为一个 64x64 的矩阵,以便于显示。imshow 函数用于显示图像,[] 参数用于自动缩放像素值。
下面是完整的代码:
load('Yale_64x64.mat');
[coeff, score, latent] = pca(fea, 'NumComponents', 20);
for i = 1:20
subplot(4, 5, i);
imshow(reshape(coeff(:, i), [64, 64]), []);
end
``
原文地址: https://www.cveoy.top/t/topic/cTpW 著作权归作者所有。请勿转载和采集!