电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

PCA_实验报告(含代码、实验流程图结果分析等)

5页
  • 卖家[上传人]:孙盼
  • 文档编号:195122553
  • 上传时间:2021-09-04
  • 文档格式:DOCX
  • 文档大小:102.79KB
  • / 5 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、PCA实现人脸识别实验报告1实验内容1) 实现PCA算法2) 用PCA算法对一张照片进行降维重构3) 计算重构误差,对比自己实现的算法与调包实现算法的误差4) 用PCA算法对120张照片进行训练,然后用同样120个人的照片作为测试集,计算误差2实验流程及相关结果2.1PCA算法的实现2.1.1PCA算法的流程2.1.2 实验代码function Z,U = pca (X, K) X=X;%X:1680*2000 mu = mean(X); X_norm = bsxfun(minus, X, mu);%中心化处理 X=X_norm; m, n = size(X); sigma=1/m*X*X;%计算协方差矩阵 u,s,v=svd(sigma);%奇异值分解 ureduce=u(:,1:K);%ureduce:2000*K X_rec=X*ureduce*ureduce;%X_rec:1680*2000 Z=X_rec;%重构结果 U=ureduce;%特征向量Endfunction2.2 用PCA实现一张照片降维重构1)展示一张照片代码:pkg load image pkg load s

      2、tatisticsload AR;AR=double(AR(:,:);image=AR(:,1);image=reshape(image,50, 40); imshow(mat2gray(image);结果:2)对一张照片进行降维重构 展示重构后的结果代码pkg load image pkg load statisticsload AR;AR=double(AR(:,:);z,u=pca(AR,50);image=z(:,1);image=reshape(image,50, 40); imshow(mat2gray(image);结果2.3 对比手动实现pca和调包实现pca的误差1)计算重构误差公式:本次计算重构误差采用如下公式代码:pkg load image pkg load statisticsload AR;AR=double(AR(:,:);z,u=pca(AR,50);loss=comloss(AR,z)function loss=comloss(X,Y) X=X; mu = mean(X); X_norm = bsxfun(minus, X, mu);%归一化处理 X=

      3、X_norm; loss=sum(sum(X-Y).2)/sum(sum(X.2);endfunction结果:2)调用matlab包实现pca算法计算重构误差代码:load AR;AR=double(AR(:,:);z,u=pca(AR,50);loss=comloss(AR,z) %手动实现pca算法的误差z1,u=autopca(AR,50);loss1=comloss(AR,z1) %调包实现pca算法的误差function z,u=autopca(X,K) COEFF SCORE latent=princomp(X); u=SCORE(:,1:K); ureduce=COEFF(:,1:K); x_rec=u*ureduce; z=x_rec; u=ureduce;endfunction结果:2.4用pca实现人脸识别1)读取120个人的不同照片作为训练集和测试集代码for i=2:14:1680 if i=2 train=AR(:,i); else train=train AR(:,i); end; endfor for i=3:14:1680 if i=3 test_da

      4、ta=AR(:,i); else test_data=test_data AR(:,i); end; endfor2)用pca实现人脸识别过程代码:z,ureduce=pca(train,k);%对120张人脸照片训练得到特征向量u_reduce 2000*K mu = mean(train); train_data = bsxfun(minus, train, mu);%中心化处理 train=train_data;%2000*120 mu = mean(test_data); test = bsxfun(minus,test_data, mu);%中心化处理 test_data=test;%2000*120 u_train=(train*ureduce);%训练数据的降维结果 k*120 u_test=(test_data*ureduce);%测试数据降维后的结果 k*120 m,n=size(u_train);%训练数据降维后的结果 m=k n个样本 result=zeros(n,1); for i=1:n x=u_test(:,i); for j=1:n y=u_train(:,j); dist=sum(x-y).2); if j=1 mindist=dist; result(i,1)=j; endif if distmindist mindist=dist; result(i,1)=j; endif endfor endfor count=0; for i=1:n if result(i,1)=i count=count+1; endif endfor pre=count/n结果:

      《PCA_实验报告(含代码、实验流程图结果分析等)》由会员孙盼分享,可在线阅读,更多相关《PCA_实验报告(含代码、实验流程图结果分析等)》请在金锄头文库上搜索。

      点击阅读更多内容
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.