主成分分析Matlab程序设计
2015-07-19 22:58
253 查看
PCA步骤:
(1)对原始数据进行标准化处理
(2)计算样本相关系数矩阵
(3)计算相关系数矩阵R的特征值和相应的特征向量
(4)选择重要的主成分,写出主成分表达式
案例问题:企业综合实力排序
企业综合实力评价表:
结果:
特征值及其贡献率,累加贡献率:
DS =
5.7361 0.7170 0.7170
1.0972 0.1372 0.8542
0.5896 0.0737 0.9279
0.2858 0.0357 0.9636
0.1456 0.0182 0.9818
0.1369 0.0171 0.9989
0.0060 0.0007 0.9997
0.0027 0.0003 1.0000
信息保留率T对应的主成分数与特征向量:
Com_num =
3
PV =
0.3334 0.3788 0.3115
0.3063 0.5562 0.1871
0.3900 -0.1148 -0.3182
0.3780 -0.3508 0.0888
0.3853 -0.2254 -0.2715
0.3616 -0.4337 0.0696
0.3026 0.4147 -0.6189
0.3596 -0.0031 0.5452
主成分得分及排序(按第四列的总分进行排序,前三列为个主成分得分,第五列为企业编号)
result_report =
5.1936 -0.9793 0.0207 4.2350 9.0000
0.7662 2.6618 0.5437 3.9717 1.0000
1.0203 0.9392 0.4081 2.3677 8.0000
3.3891 -0.6612 -0.7569 1.9710 6.0000
0.0553 0.9176 0.8255 1.7984 5.0000
0.3735 0.8378 -0.1081 1.1033 13.0000
0.4709 -1.5064 1.7882 0.7527 15.0000
0.3471 -0.0592 -0.1197 0.1682 14.0000
0.9709 0.4364 -1.6996 -0.2923 2.0000
-0.3372 -0.6891 0.0188 -1.0075 10.0000
-0.3262 -0.9407 -0.2569 -1.5238 7.0000
-2.2020 -0.1181 0.2656 -2.0545 4.0000
-2.4132 0.2140 -0.3145 -2.5137 11.0000
-2.8818 -0.4350 -0.3267 -3.6435 3.0000
-4.4264 -0.6180 -0.2884 -5.3327 12.0000
>>
(1)对原始数据进行标准化处理
(2)计算样本相关系数矩阵
(3)计算相关系数矩阵R的特征值和相应的特征向量
(4)选择重要的主成分,写出主成分表达式
案例问题:企业综合实力排序
企业综合实力评价表:
企业序号 | 净利润率/% | 固定资产利润率/% | 总产值利润率/% | 销售收入利润率/% | 产品成本利润率/% | 物耗利润率/% | 人均利润1000/人 | 流动资金 |
1 | 40.4 | 24.7 | 7.2 | 6.1 | 8.3 | 8.7 | 2.442 | 20 |
2 | 25 | 12.7 | 11.2 | 11 | 12.9 | 20.2 | 3.542 | 9.1 |
3 | 13.2 | 3.3 | 3.9 | 4.3 | 4.4 | 5.5 | 0.578 | 3.6 |
4 | 22.3 | 6.7 | 5.6 | 3.7 | 6 | 7.4 | 0.176 | 7.3 |
5 | 34.3 | 11.8 | 7.1 | 7.1 | 8 | 8.9 | 1.726 | 27.5 |
6 | 35.6 | 12.5 | 16.4 | 16.7 | 22.8 | 29.3 | 3.017 | 26.6 |
7 | 22 | 7.8 | 9.9 | 10.2 | 12.6 | 17.6 | 0.847 | 10.6 |
8 | 48.4 | 13.4 | 10.9 | 9.9 | 10.9 | 13.9 | 1.772 | 17.8 |
9 | 40.6 | 19.1 | 19.8 | 19 | 29.7 | 39.6 | 2.449 | 35.8 |
10 | 24.8 | 8 | 9.8 | 8.9 | 11.9 | 16.2 | 0.789 | 13.7 |
11 | 12.5 | 9.7 | 4.2 | 4.2 | 4.6 | 6.5 | 0.874 | 3.9 |
12 | 1.8 | 0.6 | 0.7 | 0.7 | 0.8 | 1.1 | 0.056 | 1 |
13 | 32.3 | 13.9 | 9.4 | 8.3 | 9.8 | 13.3 | 2.126 | 17.1 |
14 | 38.5 | 9.1 | 11.3 | 9.5 | 12.2 | 16.4 | 1.327 | 11.6 |
15 | 26.2 | 10.1 | 5.6 | 15.6 | 7.7 | 30.1 | 0.126 | 25.9 |
%主成分分析 PAC 的Matlab实现 %------------------------ % % 数据的输入及处理 clc clear all A=xlsread('D:\evaluation.xlsx',1,'B2:I16'); %数据的标准化处理 a=size(A,1);%获得矩阵A的行大小 b=size(A,2);%获得矩阵A的列大小 for i=1:b SA(:,i)=(A(:,i)-mean(A(:,i)))/std(A(:,i));%std函数是用来求向量的标准差 end % %计算相关系数矩阵的特征值和特征向量 CM=corrcoef(SA);%计算相关系数矩阵 [V,D]=eig(CM);%计算特征值和特征向量 for j=1:b DS(j,1)=D(b+1-j,b+1-j);%对特征值按降序排列 end for i=1:b DS(i,2)=DS(i,1)/sum(DS(:,1));%贡献率 DS(i,3)=sum(DS(1:i,1))/sum(DS(:,1));%累计贡献率 end % % 选择主成分及对应的特征向量 T=0.9;%主成分信息保留率 for k=1:b if DS(k,3)>=T Com_num=k; break; end end %提取主成分对应的特征向量 for j=1:Com_num PV(:,j)=V(:,b+1-j); end % % 计算各评价对象的主成分得分 new_score=SA*PV; for i=1:a total_score(i,1)=sum(new_score(i,:)); total_score(i,2)=i; end result_report=[new_score,total_score];%将各主成分得分与总分放在同一个矩阵中 result_report=sortrows(result_report,-4);%按总分降序排序 % % 输出模型及结果报告 disp('特征值及其贡献率,累加贡献率:') DS disp('信息保留率T对应的主成分数与特征向量:') Com_num PV disp('主成分得分及排序(按第四列的总分进行排序,前三列为个主成分得分,第五列为企业编号)') result_report
结果:
特征值及其贡献率,累加贡献率:
DS =
5.7361 0.7170 0.7170
1.0972 0.1372 0.8542
0.5896 0.0737 0.9279
0.2858 0.0357 0.9636
0.1456 0.0182 0.9818
0.1369 0.0171 0.9989
0.0060 0.0007 0.9997
0.0027 0.0003 1.0000
信息保留率T对应的主成分数与特征向量:
Com_num =
3
PV =
0.3334 0.3788 0.3115
0.3063 0.5562 0.1871
0.3900 -0.1148 -0.3182
0.3780 -0.3508 0.0888
0.3853 -0.2254 -0.2715
0.3616 -0.4337 0.0696
0.3026 0.4147 -0.6189
0.3596 -0.0031 0.5452
主成分得分及排序(按第四列的总分进行排序,前三列为个主成分得分,第五列为企业编号)
result_report =
5.1936 -0.9793 0.0207 4.2350 9.0000
0.7662 2.6618 0.5437 3.9717 1.0000
1.0203 0.9392 0.4081 2.3677 8.0000
3.3891 -0.6612 -0.7569 1.9710 6.0000
0.0553 0.9176 0.8255 1.7984 5.0000
0.3735 0.8378 -0.1081 1.1033 13.0000
0.4709 -1.5064 1.7882 0.7527 15.0000
0.3471 -0.0592 -0.1197 0.1682 14.0000
0.9709 0.4364 -1.6996 -0.2923 2.0000
-0.3372 -0.6891 0.0188 -1.0075 10.0000
-0.3262 -0.9407 -0.2569 -1.5238 7.0000
-2.2020 -0.1181 0.2656 -2.0545 4.0000
-2.4132 0.2140 -0.3145 -2.5137 11.0000
-2.8818 -0.4350 -0.3267 -3.6435 3.0000
-4.4264 -0.6180 -0.2884 -5.3327 12.0000
>>
相关文章推荐
- MAtlab中关于GUI中edit控件值传递到GUI函数变量的问题
- matlab中GUI界面点击图片获取坐标问题的解决方法
- MATLAB中的一些小技巧(基础)
- MATLAB中统计程序执行时间
- 探究网上的一个用MATLAB写的SIFT
- Matlab---M文件概述
- Matlab---程序控制流
- Matlab---数据类型
- Matlab--运算符
- 人口预测模型Matlab实现Logistic曲线模型
- MATLAB与R函数对照(2)——帮助函数
- 使用Matlab从Excel中读取数据并实现回归统计计算
- MATLAB与R函数对照(1)——说明与目录
- Matlab---变量
- MATLAB 2015 自带toolbox 列表
- 利用MATLAB生成DSP运行代码(好久不见~)
- Matlab中cell2mat的使用
- 【转】LM(Levenberg-Marquard) Matlab及C语言实现
- Matlab中数据拟合(简单粗暴不用写代码)
- Matlab获取Yahoo Finance 免费数据