資源簡介
CroppedYale人臉數據降維的MATLAB代碼,使用PCA,SVD和MATLAB自帶的PCA對比時間、準確度,可以直接運行。對比中心化給PCA帶來的影響;對比PCA與SVD的異同;選取合適的維度k,并觀察k個特征向量對應的圖像;對比自己實現的PCA算法與matlab自帶的PCA函數的性能

代碼片段和文件信息
clear;
clc;
%?加載文件
load(‘./CroppedYale/Yale_64x64.mat‘);
%?原樣本矩陣A:165*1024
A?=?fea;
tic
%%?1.?Centralization
m?=?size(A1);??%?A的行數
n?=?size(A2);??%?A的列數
meanA?=?mean(A);????%?求每一列的均值
repmatA?=?repmat(meanA?m?1);
X?=?A?-?repmatA;????%?樣本減去均值,做中心化,X:165*4096
%?X?=?A;?%?不用中心化
%%?2.?Covariance?Matrix
C?=?X‘?*?X./(m-1);??%?求協方差矩陣C:4096*4096
%%?3.?Eigenvalue?Decomposition
%?協方差矩陣C的特征向量,也稱特征臉,每一維為一個特征臉
[U?D]?=?eig(C);????%?特征向量U:4096*4096;?特征值D:4096*4096
%?按特征值大小排序
grad?=?sum(D2); %?D為對角矩陣,每個元素為相應的特征值,為方便后續處理,這里將特征值放到一個列向量
[sortGrad?index]?=?sort(grad?‘descend‘); %?排序
U?=?U(:?index);????%?將對應的特征向量降序排列
k=?1;
%?計算各行累加值所占比例
arr?=?cumsum(sortGrad)?./?sum(sortGrad);
while?(?arr(k?1)?<=?0.95?)
????k?=?k?+?1;
end
U?=?U(:?1:k);??%?提取前k個特征向量
%%?4.?Feature?Matrix
%?降維后的矩陣
Y?=?X?*?U;??%?將樣本轉化到低維空間,對樣本進行降維
toc
%%?5.?還原矩陣
A_re?=?Y?*?pinv(U)?+?repmatA;
%%?6.?顯示特征臉
%===========================================
faceW?=?64;?
faceH?=?64;?
numPerLine?=?11;?
ShowLine?=?5;?
figure
Y?=?zeros(faceH*ShowLinefaceW*numPerLine);?
%?顯示特征臉
%?for?i=0:ShowLine-1?
%??? for?j=0:numPerLine-1?
%????? Y(i*faceH+1:(i+1)*faceHj*faceW+1:(j+1)*faceW)?=?reshape(U(:i*numPerLine+j+1)[faceHfaceW]);?
%??? end?
%?end?
%?顯示降維后的人臉
for?i=0:ShowLine-1?
?? for?j=0:numPerLine-1?
???? Y(i*faceH+1:(i+1)*faceHj*faceW+1:(j+1)*faceW)?=?reshape(A_re(i*numPerLine+j+1:)[faceHfaceW]);?
?? end?
end?
imagesc(Y);colormap(gray);
%===========================================
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-04-30?11:39??CroppedYale人臉數據降維\
?????目錄???????????0??2017-04-30?11:39??CroppedYale人臉數據降維\CroppedYale\
?????文件??????161026??2017-04-04?15:11??CroppedYale人臉數據降維\CroppedYale\Yale_32x32.mat
?????文件??????641318??2017-04-04?15:11??CroppedYale人臉數據降維\CroppedYale\Yale_64x64.mat
?????文件????????1721??2017-04-09?12:44??CroppedYale人臉數據降維\PCA.m
?????文件????????1294??2017-04-09?12:48??CroppedYale人臉數據降維\PCAinMATLAB.m
?????文件????????1211??2017-04-09?12:47??CroppedYale人臉數據降維\SVD.m
評論
共有 條評論