20100373苏浩辉实验1.docVIP

  • 125
  • 0
  • 约3.51千字
  • 约 5页
  • 2017-04-01 发布于广东
  • 举报
20100373苏浩辉实验1.doc

重庆大学学生上机实验报告 上机课程名称:信息智能分析与设计 上机实验名称:实验1 主元素分析 开课学院及实验室:经济与工商管理学院 2013年 11 月 06 日 学 院 经管学院 年级、专业、班 2010级信管1班 姓 名 苏浩辉 学 号 指导教师 陈铿 成 绩 教师评语 教师签名: 【实验目的】 1、熟悉matlab环境,掌握基本的matlab操作。 2、掌握主成分分析的两种方法,并利用其分析实际问题。 【实验内容】 一、给定某农业生态经济系统各区域单元的有关数据如下,试用MATLAB两种方式完成下列数据的PCA分析和解释。 方法1:直接通过princomp和pcacpv函数分析 (1)代码如下: X0=importdata(Data1.txt);%将数据导入到矩阵X中 s=size(X0,1);% 求出矩阵X0的大小 avg=mean(X0);% 求每一列的均值 dev=std(X0);% 算出X0的标准偏差 X= (X0 - avg(ones(s,1),:))./dev(ones(s,1),:);% 矩阵标准化 A = cov(X);% 求矩阵X的协方差 [PC,SCORE,latent] = princomp(X);% PC为主成分,SCORE为Z-得分,latent为矩阵X的特征值 [pc,latent,explained] = pcacov(A);% pc为主成分,latent为协方差矩阵A的特征值,explained为每个特征向量在观测总方差中所占的百分数 (2)得到特征值latent: 特征向量: 每个特征值的贡献率explained: 方法2:根据PCA原理分步求解 完整代码: X0=importdata(Data1.txt);%将数据导入到矩阵X中 s=size(X0,1);% 求出矩阵X0的大小 avg=mean(X0);% 求每一列的均值 dev=std(X0);% 算出X0的标准偏差 X= (X0 - avg(ones(s,1),:))./dev(ones(s,1),:);% 矩阵标准化 [m,n]=size(X);% 求出矩阵X的行列数 A = cov(X);% 求矩阵X的协方差 [ x, D ] = eig(A); %求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成x的列向量 lamda0 =diag( D );% 提取对角线元素,求取特征值 [lamda,IX] = sort( lamda0, descend);% 把特征值按降序排列,lamda为按降序排列后的特征值,IX为排序后原数值的下标所组成的矩阵 for i =1:n v(:,i)=x(:, IX(i));% 求出对应特征值的特征向量v(i) end S=sum(lamda);% 求特征值总和 for i=1:n LAM1(i,1)=lamda(i)/S;% 求每个特征值的贡献率 end LAM2(1)=LAM1(1); for i=2:n LAM2(i,1)=LAM1(i)+LAM2(i-1);% 求每个特征值的累计贡献率 End 分步解释: (1)将农业生态经济系统各区域单元的有关数据写入到Data1.txt中,同时将Data1.txt导入矩阵X0。 X0=importdata(Data1.txt);%将数据导入到矩阵X中 (2)矩阵标准化 s=size(X0,1);% 求出矩阵X0的大小 avg=mean(X0);% 求每一列的均值 dev=std(X0);% 算出X0的标准偏差 X= (X0 - avg(ones(s,1),:))./dev(ones(s,1),:);% 矩阵标准化 [m,n]=size(X);% 求出矩阵X的行列数 (3)计算协方差矩阵在MATLAB中调用函数COV。 A = cov(X);% 求矩阵X的协方差 可计算出协方差矩阵 (4)计算对应的协方差矩阵对应的特征向量与特征值。 [ x, D ] = eig(A); %求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成x的列向量 lamda0 =diag( D );% 提取对角线元素,求取特征值 其中A为协方差矩阵,x为对应的特征向量,lamda0为对应的特征值。 重新排序,以获得从大到小排列的特征值与特征向量 [lamda,IX] = sort( lamda0, descend);% 把特征值按降序排列,lamda为按降序排列后的特征值,IX为排序后原数值的下标所组成的矩阵 for i =1:n v(:,i)=x

文档评论(0)

1亿VIP精品文档

相关文档