主成分分析法MATLAB的实现.docx
- 文档编号:3530928
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:16
- 大小:138.96KB
主成分分析法MATLAB的实现.docx
《主成分分析法MATLAB的实现.docx》由会员分享,可在线阅读,更多相关《主成分分析法MATLAB的实现.docx(16页珍藏版)》请在冰点文库上搜索。
主成分分析法MATLAB的实现
主成分分析法MATLAB的实现
MATLAB
结
课
作
业
指导老师:
张肃
班级:
信管121
姓名:
桂亚东
学号:
4118
利用Matlab编程实现主成分分析
概述
Matlab语言是当今国际上科学界(尤其是自动控制领域)最具影响力、也是最有活力的软件。
它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。
它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、与其他程序和语言的便捷接口的功能。
Matlab语言在各国高校与研究单位起着重大的作用。
主成分分析是把原来多个变量划为少数几个综合指标的一种统计分析方法,从数学角度来看,这是一种降维处理技术。
主成分分析计算步骤
计算相关系数矩阵
(1)
在(3.5.3)式中,rij(i,j=1,2,…,p)为原变量的xi与xj之间的相关系数,其计算公式为
(2)
因为R是实对称矩阵(即rij=rji),所以只需计算上三角元素或下三角元素即可。
计算特征值与特征向量
首先解特征方程
,通常用雅可比法(Jacobi)求出特征值
,并使其按大小顺序排列,即
;然后分别求出对应于特征值
的特征向量
。
这里要求
=1,即
,其中
表示向量
的第j个分量。
计算主成分贡献率及累计贡献率
主成分
的贡献率为
累计贡献率为
一般取累计贡献率达85—95%的特征值
所对应的第一、第二,…,第m(m≤p)个主成分。
计算主成分载荷
其计算公式为
(3)
得到各主成分的载荷以后,还可以按照(3.5.2)式进一步计算,得到各主成分的得分
(4)
2.函数作用
——用总和标准化法标准化矩阵
——计算相关系数矩阵;计算特征值和特征向量;对主成分进行排序;计算各特征值贡献率;挑选主成分(累计贡献率大于85%),输出主成分个数;计算主成分载荷
——计算各主成分得分、综合得分并排序
——读入数据文件;调用以上三个函数并输出结果
3.源程序
总和标准化法标准化矩阵
%,用总和标准化法标准化矩阵
functionstd=cwstd(vector)
cwsum=sum(vector,1);%对列求和
[a,b]=size(vector);%矩阵大小,a为行数,b为列数
fori=1:
a
forj=1:
b
std(i,j)=vector(i,j)/cwsum(j);
end
end
计算相关系数矩阵
%
functionresult=cwfac(vector);
fprintf('相关系数矩阵:
\n')
std=CORRCOEF(vector)%计算相关系数矩阵
fprintf('特征向量(vec)及特征值(val):
\n')
[vec,val]=eig(std)%求特征值(val)及特征向量(vec)
newval=diag(val);
[y,i]=sort(newval);%对特征根进行排序,y为排序结果,i为索引
fprintf('特征根排序:
\n')
forz=1:
length(y)
newy(z)=y(length(y)+1-z);
end
fprintf('%g\n',newy)
rate=y/sum(y);
fprintf('\n贡献率:
\n')
newrate=newy/sum(newy)
sumrate=0;
newi=[];
fork=length(y):
-1:
1
sumrate=sumrate+rate(k);
newi(length(y)+1-k)=i(k);
ifsumrate>break;
end
end%记下累积贡献率大85%的特征值的序号放入newi中
fprintf('主成分数:
%g\n\n',length(newi));
fprintf('主成分载荷:
\n')
forp=1:
length(newi)
forq=1:
length(y)
result(q,p)=sqrt(newval(newi(p)))*vec(q,newi(p));
end
end%计算载荷
disp(result)
%,计算得分
functionscore=cwscore(vector1,vector2);
sco=vector1*vector2;
csum=sum(sco,2);
[newcsum,i]=sort(-1*csum);
[newi,j]=sort(i);
fprintf('计算得分:
\n')
score=[sco,csum,j]
%得分矩阵:
sco为各主成分得分;csum为综合得分;j为排序结果
%
functionprint=cwprint(filename,a,b);
%filename为文本文件文件名,a为矩阵行数(样本数),b为矩阵列数(变量指标数)
fid=fopen(filename,'r')
vector=fscanf(fid,'%g',[ab]);
fprintf('标准化结果如下:
\n')
v1=cwstd(vector)
result=cwfac(v1);
cwscore(v1,result);
4.程序测试
原始数据
中国大陆35个大城市某年的10项社会经济统计指标数据见下表。
城市
名称
年底
总人口
(万人)
非农业
人口比(%)
农业
总产值
(万元)
工业
总产值
(万元)
客运总量
(万人)
货运总量
(万吨)
地方财政
预算内收入(万元)
城乡居民年底储蓄余额
(万元)
在岗职工人数(万人)
在岗职工工资总额
(万元)
北京
1
8
1843427
19999706
20323
45562
2790863
26806646
5773301
天津
9
1501136
22645502
3259
26317
1128073
11301931
2254343
石家庄
2
2918680
6885768
2929
1911
352348
7095875
758877
太原
3
236038
2737750
1937
11895
203277
3943100
654023
呼和浩特
2
365343
816452
2351
2623
105783
1396588
309337
沈阳
9
1295418
5826733
7782
15412
567919
9016998
1152811
大连
6
1879739
8426385
10780
19187
709227
7556796
965922
长春
8
1853210
5966343
4810
9532
357096
4803744
884447
哈尔滨
7
2663855
4186123
6720
7520
481443
6450020
1309151
上海
1
4
2069019
54529098
6406
44485
4318500
25971200
5605445
南京
1
989199
13072737
14269
11193
664299
5680472
1357861
杭州
6
1414737
12000796
17883
11684
449593
7425967
1180947
宁波
7
1428235
10622866
22215
10298
501723
5246350
824034
合肥
4
628764
2514125
4893
1517
233628
1622931
369577
福州
3
2152288
6555351
8851
7190
467524
5030220
680607
厦门
5
333374
5751124
3728
2570
418758
2108331
657484
南昌
8
688289
2305881
3674
3189
167714
2640460
479,555
济南
5
1486302
6285882
5915
11775
460690
4126970
756696
青岛
3
2382320
11492036
13408
17038
658435
4978045
961704
郑州
4
677425
5287601
10433
6768
387252
5135338
696848
武汉
9
1211291
7506085
9793
15442
604658
5748055
1314766
长沙
7
1146367
3098179
8706
5718
323660
3461244
596986
广州
4
1600738
23348139
22007
23854
1761499
20401811
3047594
深圳
1
299662
20368295
8754
4274
1847908
9519900
1890338
南宁
4
720486
1149691
5130
3293
149700
2190918
371809
海口
4
44815
717461
5345
2356
115174
1626800
198138
重庆
3
7
4168780
8585525
52441
25124
898,912
9090969
1606804
成都
1
1935590
5894289
40140
19632
561189
7479684
1200671
贵阳
7
362061
2247934
15703
4143
197908
1787748
419681
昆明
5
793356
3605729
5604
12042
524216
4127900
842321
西安
4
739905
3665942
10311
9766
408896
5863980
885169
兰州
5
259444
2940884
1832
4749
169540
2641568
550890
西宁
7
65848
711310
1746
1469
49134
855051
219251
银川
9
171603
661226
2106
1193
74758
814103
178621
乌鲁木齐
4
78513
1847241
2668
9041
254870
2365508
517622
运行结果
>>cwprint('',35,10)
fid=
6
数据标准化结果如下:
v1=
相关系数矩阵:
std=
特征向量(vec):
vec=
特征值(val)
val=
000000000
000000000
000000000
000000000
000000000
000000000
000000000
000000000
000000000
000000000
特征根排序:
各主成分贡献率:
newrate=
第一、二主成分的载荷:
1
3
7
5
6
3
7
7
9
6
第一、二、三、四主成分的得分:
score=
594
662
834
617
954
8080
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 成分 分析 MATLAB 实现