对PCA算法的理解和公式推导:
MATLAB程序:
%%%%%特征降维,主成分分析PCA
%X是需要降维的特征
%CRate是贡献率,计算前n个大特征值的占所有特征值的比列
%meanValue均值矩阵
%T前n大特征值对应的特征向量组成的矩阵
%newX变换后的新的特征
function [newX,T,meanValue] = PCA_pro(X,CRate)
meanValue=ones(size(X,1),1)*mean(X);
a_X=X-meanValue;
%%协方差矩阵
cor_matrix=a_X'*a_X/(size(a_X,1)-1);
%%特征值及特征向量
[V,D]=eig(cor_matrix);
%diag是将对角矩阵的对角元素转换成向量
[newd,order]=sort(diag(D),'descend');
V=V(:,order);
sumd=sum(newd);%特征值之和
for j=1:length(newd)
i=sum(newd(1:j,1))/sumd;%计算贡献率,贡献率=前n个特征值之和/总特征值之和
if i>CRate%当贡献率大于95%时循环结束,并记下取多少个特征值
cols=j;
break;
end
end
T&#