1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 特征抽取 PCA主成分分析

特征抽取 PCA主成分分析

时间:2021-10-07 22:04:52

相关推荐

特征抽取 PCA主成分分析

一、方法

主成分分析也成主分量分析,利用降维的思想,将多个指标特征转化为少数的几个综合指标特征。是一种线性变化来简化数据集的技术。在减少维数的同时还尽可能多的保留数据集的特征。

作用在于:降低维数,弄清变量间关系,在低维可以图形化,构造回归模型以及筛选回归变量等

二、步骤

1.对原始数据标准化 xi=(Xi-平均值Xi)/Si

2.计算标准化后的相关系数矩阵R

3.计算R的特征值和特征向量

4.计算贡献率和累计贡献率以及主成分载荷 lij=sqrt(lambai)eij,其中ei是对应特征值lambdai的特征向量,eij为ei的第j个分量

三、实验

数据 data.txt

148 41 72 78139 34 71 76160 49 77 86149 36 67 79159 45 80 86142 31 66 76153 43 76 83150 43 77 79151 42 77 80139 31 68 74140 29 64 74161 47 78 84158 49 78 83140 33 67 77137 31 66 73152 35 73 79149 47 82 79145 35 70 77160 47 74 87156 44 78 85151 42 73 82147 38 73 78157 39 68 80147 30 65 75157 48 80 88151 36 74 80144 36 68 76141 30 67 76139 32 68 73148 38 70 78

print.m

%pca 主成分分析结果表function print(X)Z=zscore(X);%进行标准化 (x-平均x/s)R=corrcoef(Z);%对标准化后的矩阵求相关系数矩阵R,这里使用cov也是可以的,和结果相差无几,cov的时候可以不对X进行标准化[V,D]=eig(R); %对相关系数矩阵R求特征值和特征向量分别为D和VCols=size(X,2);%获取特征的个数characters=zeros(1,Cols);%将特征值保存在characters中for i=1:Colscharacters(i)=D(i,i);end[sortedCharacters,label]=sort(characters,'descend'); %逆序排序,并记下结果和索引fprintf(' Eigenvalue of the Correlation Matrix\n');fprintf('EigenvalueDifference ProportionCumulative \n');total=0;for i=1:Colsfprintf([' Z' num2str(i)]);fprintf('%.4f',sortedCharacters(i));if i==Colsfprintf(' . ');elsefprintf(' %.4f',sortedCharacters(i)-sortedCharacters(i+1));endfprintf(' %.4f',sortedCharacters(i)/sum(sortedCharacters));total=total+sortedCharacters(i);fprintf(' %.4f\n',total/sum(sortedCharacters));endfprintf(' Eigenvectors\n');fprintf(' Z1 Z2 Z3 Z4 \n');for i=1:Colsfprintf([' X' num2str(i)]); %[]进行字符串连接for j=1:Colsfprintf(' %8.4f ',V(i,label(j))); %格式化输出endfprintf('\n');end

结果

可以看出前两个特征累计贡献率已达到96.36%,因此只需要两个特征就可以很好地概括这组数据. 一般取累计贡献率达85%-95%的特征值lambda1,lambda2,..lambdam对应的前m个主成分. 当沿着Z1的向量方向投影是最好的.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。