机器学习(周志华) 参考答案 第十章 降维与度量学习 10.6

机器学习(周志华) 参考答案 第十章 降维与度量学习 10.6

机器学习(周志华西瓜书) 参考答案 总目录

  • http://blog.csdn.net/icefire_tyh/article/details/52064910

机器学习(周志华) 参考答案 第十章 降维与度量学习

  • http://blog.csdn.net/icefire_tyh/article/details/52243773

6.试使用matlab的PCA函数对人脸数据进行降维,并观察前20个特征向量对应的图像。

这道题只是让比较一下图,试了前20,80,160个特征生成的图像,很明显特征越多越能还原图像。
选几张图片作为实例,从左到右依次是原图,20特征,80特征,160特征的图像。
全部图像在这里

可以看出特征少时有很大的重影,但由于是最显著的几种特征,依然能看出与原图几分相似。

参考代码

%输入数据格式
filename_m='C:\\Users\\icefire\\Desktop\\ml\\yalefaces\\subjct%03d.gif';
%记录所有数据的矩阵
info=zeros(243*320,166);
%输入,将图片保存为一列
k=20;
for i=1:166
    filename=sprintf(filename_m,i);
    img = imread(filename,'gif');
    info(:,i)=img(:);
end
%进行PCA分析
coeff=pca(info);
%只保留前k个特征
coeff(:,k+1:165)=0;
info=info* (coeff * coeff');

filename_m='C:\\Users\\icefire\\Desktop\\ml\\yalefaces\\subjct%03d_21.gif';

%输出图片
for i=1:166
    filename=sprintf(filename_m,i);
    img=reshape(info(:,i),243,320);
    imwrite(img,filename,'gif');
end

你可能感兴趣的:(机器学习(周志华西瓜书))