对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=V(:,1:cols);
newX=X*T;
end
参考:
https://www.cnblogs.com/simon-c/p/4902651.html
https://www.cnblogs.com/houzichiguodong/p/9295998.html
https://blog.csdn.net/huangfei711/article/details/78663474
https://my.oschina.net/gujianhan/blog/225241
http://www.cnblogs.com/sweetyu/p/5085798.html
http://blog.csdn.net/zhongkejingwang/article/details/42264479
矩阵的求导参考:
https://blog.csdn.net/daaikuaichuan/article/details/80620518
博客内容介绍了PCA主成分分析的原理,详细推导了算法公式,并提供了MATLAB程序实现。通过参考多个资源,读者可以深入理解PCA并掌握其实现方法。

5704

被折叠的 条评论
为什么被折叠?



