- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验1_20100356官子力.doc
重庆大学学生上机实验报告
上机课程名称:信息智能分析与预测
上机实验名称:实验1 主元素分析
开课学院及实验室:经济与工商管理学院 2013年10 月 23 日
学 院 经管学院 年级、专业、班 2010级信管1班 姓 名 官子力 学 号 指导教师 陈铿 成 绩 教师评语
教师签名: 【实验目的】
给定某农业生态经济系统各区域单元的有关数据如下,试用Matlab的两种方式完成下列数据的PCA分析和解释。
【实验内容】
读取文件数据
程序代码
clear all;
%读取文件数据
fid = fopen(.\shuju.txt,r);
data = fscanf( fid, %f,[ 9,inf ] );
fclose( fid );
数据读取的结果显示
对数据进行归一化处理
为了去除各数据的量纲影响,首先对读取的数据进行归一化处理,即将数据处理在[-1,1]的区间内并使其均值为0,其中需要注意的是究竟是对行还是列进行归一化,在具体的操作上体现为调用函数时是否需要对数据矩阵进行转置。
程序代码(给出了不同版本Matlab中的归一化函数)
%数据归一化处理
%sdata = premnmx( data ); %(老版本)
sdata = mapminmax( data ); %(新版本)
数据归一化后的结果显示
从结果可以看出,数据按照行进行了归一化。即各行数据处于[-1,1]区间内。
计算数据的协方差矩阵
需要注意的是,在调用函数计算的时候仍要考虑究竟是按照行还是列。一般可以从计算的协方差矩阵结果判断是否正确:若数据是有n个指标,则协方差矩阵应该是一个的方阵。
程序代码
%求协方差矩阵
A = cov( sdata);
计算的协方差矩阵结果显示
从计算的结果可以看出,经过归一化处理后的数据计算出的协方差矩阵应该是一个对称阵。
计算协方差矩阵对应的特征向量与特征值
根据PCA的计算过程可以看出,数据对应的协方差矩阵对应的特征值即反映各指标对于数据整体表述的贡献程度大小,而相应的特征向量即为各指标表示数据整体的权重。
程序代码
%计算协方差矩阵对应的特征值与特征向量
[x, D] = eig( A );
lamda0 = diag( D );
[lamda, IX] = sort(lamda0, descend); %对特征值按降序排序
计算的结果显示
特征值的计算结果
特征向量的计算结果
根据计算出的特征值选取主成分
根据特征值的计算结果,可以分析出各指标的贡献度的占比情况。再在计算出的累积占比基础上,根据给定的一个比率(如85%)构建指标中的主成分。
程序代码
%求特征值的累计占比
r = cumsum( lamda )./ sum( lamda );
%取得满足要求的特征向量(以占比0.85为条件选出的)
v1 = x(:, IX(1) );
v2 = x(:, IX(2) );
v3 = x(:, IX(3) );
计算结果显示
根据特征值计算出的累积占比结果(图1所示),可以看出前三个的累积结果就已经超过85%(为87.85%),即按照一定方式构建的一个三维的指标体系就能反映出整体数据信息的87.85%,这样就由原来的9个指标缩减为3个指标(即为主成分),对应的特征向量值即为各主成分中原先各指标的权重(图2至图4所示)。
计算数据的主成分
程序代码
%输出主成分的的表示结果
[M, N] = size(data);
for i = 1:N
zdata(i,1) = sum(v1.*data(:,i));
zdata(i,2) = sum(v2.*data(:,i));
zdata(i,3) = sum(v3.*data(:,i));
end
结果显示
Matlab中已有的主成分计算函数的调用计算对比
程序代码及计算结果对比:
Princomp函数
程序代码:[PC,SCORE,latent] = princomp(sdata)
计算结果:
latent = [1.3170,0.5059,0.2792,0.1247,0.0776,0.0461,0.0271,0.0129],即与计算出的按降序排列的特征值完全相同。
并且,计算的PC矩阵前3列也与之前计算的v1、v2、v3依次对应相同。
Pcacov函数
程序代码:[PC,latent,explained] = pcacov(A)
计算结果:
从结果可以看出,latent与特征值的计算结果仍是相同的,且explained也与计算的累积占比r相对应。
总的来看,
文档评论(0)