建设网站公司,怎样的网站打开速度块,长沙做网络推广公司的,动易做网站目录
一.思路模型见文末名片#xff0c;比赛开始第一时间更新
二.大湾区杯常用算法之主成分分析法(PCA)
三.MATLAB代码
四.国赛建模思路获取见此 一.思路模型见文末名片#xff0c;比赛开始第一时间更新 二.大湾区杯常用算法之主成分分析法(PCA)
主成分分析法(PCA)是一种…
目录
一.思路模型见文末名片比赛开始第一时间更新
二.大湾区杯常用算法之主成分分析法(PCA)
三.MATLAB代码
四.国赛建模思路获取见此 一.思路模型见文末名片比赛开始第一时间更新 二.大湾区杯常用算法之主成分分析法(PCA)
主成分分析法(PCA)是一种高效处理多维数据的多元统计分析方法将主成分分析用于多指标变量的综合评价较为普遍。笔者自从本科学习数学建模就开始接触该方法但是一直没有系统地整理过借这个机会总结一下以备不时之需。
该方法的基本思想是运用较少的变量去解释原始数据中的大部分变异通过对原始数据相关矩阵内部结构关系的分析和计算产生一系列互不相关的新变量。根据需要从中选取比原始变量个数少的几个新变量这些新的变量就是所谓的主成分它们能够充分解释原始数据的变化。因此主成分分析法本质上是一种降维方法也多被用于高维数据的降维处理。
主成分分析的步骤原始数据X1,X2,⋯⋯, Xn标准化建立变量的相关系数阵计算特征根和相应的特征向量确定主成分的个数kkn建立主成分F1,F2,⋯⋯, Fk的表达式建立综合指标F的表达式。
数据 数据的形式一般为多个样本的多个指标如下是18个输油管段在10个指标上的表现即一个18*10的矩阵。将其保存到空白txt文件中并保存作为程序的原始数据。下面的数据来源为论文《基于主成分-聚类分析法的管道风险评价方法》。
数据下载链接
链接https://pan.baidu.com/s/18xfbTn16s-bEJwrNYpSpZQ 提取码zy1f
三.MATLAB代码
代码相对简单是从司守奎大神的《数学建模算法与应用》一书中学习到的笔者只不过添加了一点注释拾人牙慧惭愧惭愧。 将代码文件和txt文件放在一个文件夹中就可以。 clc,clear data load(gd.txt);%将原始数据保存在txt文件中 datazscore(data); %数据的标准化 rcorrcoef(data); %计算相关系数矩阵r %下面利用相关系数矩阵进行主成分分析vec1的第一列为r的第一特征向量即主成分的系数 [vec1,lamda,rate]pcacov(r); %lamda为r的特征值rate为各个主成分的贡献率 frepmat(sign(sum(vec1)),size(vec1,1),1); %构造与vec1同维数的元素为±1的矩阵 vec2vec1.*f; %修改特征向量的正负号使得每个特征向量的分量和为正即为最终的特征向量 num max(find(lamda1)); %num为选取的主成分的个数,这里选取特征值大于1的 dfdata*vec2(:,1:num); %计算各个主成分的得分 tfdf*rate(1:num)/100; %计算综合得分 [stf,ind]sort(tf,descend); %把得分按照从高到低的次序排列 stfstf; indind; %stf为得分从高到低排序ind为对应的样本编号 1 输出结果分析 代码输出的结果不少下面按照主成分分析的步骤进行说明。可以结合运行结果来看这部分表格不少就不贴了。
首先是数据标准化主成分分析的结果直接受指标量纲的影响。由于各指标的单位可能不一样因此进行量化评分得到的数据值大小也是不同的。如埋深的单位是米相应指标在0.8到2.0之间而人口密度指标的数据值在280左右这样会导致分析结果的不准确。因此数据的标准化是主成分分析的前提条件所以实际中可以先把各指标的数据标准化。标准化结果保存在data中。
完成数据的标准化后对所得结果计算得到标准化数据的相关系数矩阵相关系数矩阵保存在r中。相关系数代表了不同指标之间的相关程度绝对值越大代表相关性越高。相关性较高的变量之间存在信息上的重叠信息重叠在很大程度上会影响评价结果的客观性因此相关性矩阵可以证明进行主成分分析的必要性。
由相关系数矩阵可以计算出特征值与特征向量计算得到与指标数量n相等的n个待选主成分。n个特征值代表了n个主成分对最终评价结果的贡献程度特征值保存在lamda中从大到小排列。主成分的特征向量为n*n的矩阵保存在vec1中表示主成分和相应的原始数据的相关关系其绝对值越大则主成分对该指标的代表性越大。为了方便计算修改特征向量的正负号使得每个特征向量的分量和为正即为最终的特征向量特征向量保存在vec2中每一列代表一个特征向量对应一个主成分。 待选择的主成分——特征值——贡献率的对应情况见下表。 在主成分的选取上对应的特征值大小是一个重要衡量因素普遍的做法是保存特征值要大于1的主成分舍弃特征值小于1 的主成分因此最终的主成分个数会小于指标个数n。也可以根据贡献度大小累计贡献度达到某个程度不同标准有70%以上85%以上或其他。这里选取所有特征值大于1的主成分选取的主成分个数保存在num中一共有3个。第1主成分对应的就是vec2中的第一列特征向量以此类推具体见下表。 将特征贡献率作为系数对应的指标作为自变量可以得出每一个主成分的计算表达式。将标准化数据Xi代入表达式就可以得到对应的主成分值。形如关于下面公式的生成见文章MATLAB编写多元一次方程
将特征值lamda作为系数对应的主成分作为自变量可以确定综合评价值的表达式FL1F1L2F2……LkFk即
带入之前求得的主成分值得到每个样本的综合评价值保存在tf中。将综合评价值从高到低排序保存在stf中并输出对应的样本编号保存在ind中。
注意有网友说最后综合主成分F的计算错了很多资料和文献都是用的各个特征值占所提取主成分总的特征值之和的比例作为权重的。这一点大家注意甄别建议多看看其他资料
四.国赛建模思路获取见此