主成分分析法MATLAB实现.docx

上传人:b****5 文档编号:12183928 上传时间:2023-04-17 格式:DOCX 页数:22 大小:24.50KB
下载 相关 举报
主成分分析法MATLAB实现.docx_第1页
第1页 / 共22页
主成分分析法MATLAB实现.docx_第2页
第2页 / 共22页
主成分分析法MATLAB实现.docx_第3页
第3页 / 共22页
主成分分析法MATLAB实现.docx_第4页
第4页 / 共22页
主成分分析法MATLAB实现.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

主成分分析法MATLAB实现.docx

《主成分分析法MATLAB实现.docx》由会员分享,可在线阅读,更多相关《主成分分析法MATLAB实现.docx(22页珍藏版)》请在冰豆网上搜索。

主成分分析法MATLAB实现.docx

主成分分析法MATLAB实现

.

MATLAB

.

.

指导老师:

张肃

班级:

信管121

姓名:

桂亚东

学号:

201200654118

利用Matlab编程实现主成分分析

概述

Matlab语言是当今国际上科学界(尤其是自动控制领域)最具影响力、也是

最有活力的软件。

它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。

它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设

计、与其他程序和语言的便捷接口的功能。

Matlab语言在各国高校与研究单位

起着重大的作用。

主成分分析是把原来多个变量划为少数几个综合指标的一种统

计分析方法,从数学角度来看,这是一种降维处理技术。

1.1主成分分析计算步骤

.

.

①计算相关系数矩阵

r

11

r

12

r

1p

R

r

21

r

22

r

2

p

rr

p1p2

r

pp

(1)

在(3.5.3)式中,rij(i,j=1,2,⋯,p)为原变量的xi与xj之间的相关

系数,其计算公式为

n

(x

ki

x

i

)(

x

kj

x

j

r

ij

n

k1

n

(x

ki

x

i

2

(xx

kj

j

2

k1k1

(2)

因为R是实对称矩阵(即rij=rji),所以只需计算上三角元素或下三角元素即可。

②计算特征值与特征向量

首先解特征方程IR0,通常用雅可比法(Jacobi)求出特征值

(i1,2,,p)

i,并使其按大小顺序排列,即12,p0;然后分别求

出对应于特征值

p

2

i的特征向量ei(i1,2,,p)。

这里要求ei=1,即e1,

ij

j1

其中

e表示向量ei的第j个分量。

ij

③计算主成分贡献率及累计贡献率

主成分

z的贡献率为

i

.

.

i

(i1,2,,p)p

k

k1

累计贡献率为

i

k

k

1ip

(1,2,,)p

k

k1

一般取累计贡献率达85—95%的特征值,2,,

1所对应的第一、第

m

二,⋯,第m(m≤p)个主成分。

④计算主成分载荷

其计算公式为

lp(z,x)e(i,j1,2,,p)

ij(3)

ijiij

得到各主成分的载荷以后,还可以按照(3.5.2)式进一步计算,得到各主

成分的得分

z

11

z

12

z

1m

Z

z

21

z

22

z

2m

z

n1

z

n2

z

nm

(4)

2.函数作用

.

.

Cwstd.m——用总和标准化法标准化矩阵

Cwfac.m——计算相关系数矩阵;计算特征值和特征向量;对主成分进行

排序;计算各特征值贡献率;挑选主成分(累计贡献率大于85%),输出主成分

个数;计算主成分载荷

Cwscore.m——计算各主成分得分、综合得分并排序

Cwprint.m——读入数据文件;调用以上三个函数并输出结果

1.2源程序

3.1cwstd.m总和标准化法标准化矩阵

%cwstd.m,用总和标准化法标准化矩阵

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

3.2cwfac.m计算相关系数矩阵

%cwfac.m

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>0.85break;

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)

3.3cwscore.m

%cwscore.m,计算得分

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为排序结果

3.4cwprint.m

%cwprint.m

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);

3.2程序测试

4.1原始数据

中国大陆35个大城市某年的10项社会经济统计指标数据见下表。

.

.

城市

名称

年底

总人口

(万人)

非农

人口比

(%)

农业

总产值

(万元)

工业

总产值

(万元)

客运货运地方财政

总量

(万人)

总量

(万吨)

预算内收

入(万元)

城乡居民

年底储蓄

余额

(万元)

在岗职

工人数

(万人)

在岗职工

工资总额

(万元)

北京1249.90

1.3

8

1843427

19999

706

20

323

45

562

2790863

26806

646

3.35773301

天津910.17

4.2

9

1501136

22645

502

3259

26

317

1128073

11301

931

202.682254343

石家庄875.40

0.233

2

2918680688576829291911352348709587595.60758877

太原299.92

0.656

3

23603827377501937

11

895

203277394310088.65654023

呼和浩特207.78

0.441

2

36534381645223512623105783139658842.11309337

沈阳677.08

0.629

9

129541858267337782

15

412

5679199016998135.451152811

大连545.31

0.494

6

18797398426385

10

780

19

187

709227755679694.15965922

长春691.23

0.406

8

18532105966343481095323570964803744102.63884447

哈尔滨927.09

0.462

7

26638554186123672075204814436450020172.791309151

上海1313.12

0.738

4

2069019

54529

098

6406

44

485

4318500

25971

200

336.845605445

南京537.44

0.534

1

989199

13072

737

14

269

11

193

6642995680472113.811357861

杭州616.05

0.355

6

1414737

12000

796

17

883

11

684

449593742596796.901180947

宁波538.41

0.254

7

1428235

10622

866

22

215

10

298

501723524635062.15824034

合肥429.95

0.318

4

628764251412548931517233628162293147.27369577

福州583.13

0.273

3

2152288655535188517190467524503022069.59680607

厦门128.99

0.486

5

333374575112437282570418758210833146.93657484

南昌424.20

0.398

8

688289230588136743189167714264046062.08479,555

济南557.630.40814863026285882591511460690412697083.31756696

.

.

5775

青岛702.97

1.4

3

2382320

11492

036

13

408

17

038

6584354978045103.52961704

郑州615.36

3.4

4

6774255287601

10

433

6768387252513533884.66696848

武汉740.20

4.3

9

121129175060859793

15

442

6046585748055149.201314766

长沙582.47

202.69

7

1146367309817987065718323660346124469.57596986

广州685.00

0.234

4

1600738

23348

139

22

007

23

854

1761499

20401

811

0.6573047594

深圳119.85

0.442

1

299662

20368

295

875442741847908951990091.261890338

南宁285.87

0.630

4

720486114969151303293149700219091845.09371809

海口54.38

0.495

4

4481571746153452356115174162680019.01198138

重庆3072.34

0.407

7

41687808585525

52

441

25

124

898,9129090969223.731606804

成都1003.560.33519355905894289

40

140

19

632

5611897479684132.891200671

贵阳321.50

0.463

7

3620612247934

15

703

4143197908178774855.28419681

昆明473.39

0.739

5

79335636057295604

12

042

524216412790088.11842321

西安674.50

336.85

4

7399053665942

10

311

97664088965863980114.01885169

兰州287.59

0.535

5

259444294088418324749169540264156865.83550890

西宁133.95

0.356

7

65848711310174614694913485505127.21219251

银川95.38

0.255

9

171603661226210611937475881410323.72178621

乌鲁木齐158.92

0.319

4

78513184724126689041254870236550855.27517622

.

.

1.5运行结果

>>cwprint('cwbook.txt',35,10)

fid=

6

数据标准化结果如下:

v1=

3.50.03560.04350.06800.05570.11120.11940.11840.1083

4.4

202.700.03460.03540.07700.00890.06420.04830.04990.0534

0.235

0.6580.01390.06880.02340.00800.00470.01510.03140.0252

0.443

0.6310.03910.00560.00930.00530.02900.00870.01740.0234

0.496

0.4080.02630.00860.00280.00640.00640.00450.00620.0111

0.464

.

.

1.60.03750.03050.01980.02130.03760.02430.03980.0357

3.6

4.50.02950.04430.02860.02950.04680.03040.03340.0248

202.71

0.2360.02420.04370.02030.01320.02330.01530.02120.0270

0.659

0.4440.02760.06280.01420.01840.01840.02060.02850.0455

0.632

0.4970.04400.04880.18530.01760.10860.18480.11480.0888

0.409

0.4650.03180.02330.04440.03910.02730.02840.02510.0300

0.740

336.860.02120.03340.04080.04900.02850.01920.03280.0255

0.536

0.3570.01520.03370.03610.06090.02510.02150.02320.0164

0.256

0.2570.01900.01480.00850.01340.00370.01000.00720.0125

0.320

0.2740.01630.05080.02230.02430.01750.02000.02220.0183

0.487

0.3990.02900.00790.01950.01020.00630.01790.00930.0124

0.159

.

.

1.70.02370.01620.00780.01010.00780.00720.01170.0164

3.7

4.60.02430.03500.02140.01620.02870.01970.01820.0220

202.72

0.2370.02200.05620.03910.03670.04160.02820.02200.0273

0.660

0.4450.02040.01600.01800.02860.01650.01660.02270.0223

0.633

0.4980.03490.02860.02550.02680.03770.02590.02540.0393

0.410

0.4660.01850.02700.01050.02390.01400.01390.01530.0183

0.741

336.870.03700.03770.07930.06030.05820.07540.09010.0482

0.537

0.3580.04720.00710.06920.02400.01040.07910.04210.0240

0.258

0.3210.02420.01700.00390.01410.00800.00640.00970.0119

0.275

0.4880.04970.00110.00240.01460.00570.00490.00720.0050

0.400

0.1600.01230.09830.02920.14370.06130.03850.04020.0590

0.387

.

.

1.80.01990.04560.02000.11000.04790.02400.03310.0350

3.8

4.70.02710.00850.00760.04300.01010.00850.00790.0146

202.73

0.2380.02300.01870.01230.01540.02940.02240.01820.0232

0.661

0.4460.02440.01740.01250.02830.02380.01750.02590.0300

0.634

0.4990.03240.00610.01000.00500.01160.00730.01170.0173

0.411

0.4670.03110.00160.00240.00480.00360.00210.00380.0072

0.742

336.880.03400.00400.00220.00580.00290.00320.00360.0063

0.538

0.3590.04910.00190.00630.00730.02210.01090.01050.0146

0.259

相关系数矩阵:

std=

0.322-0.34440.84250.36030.73900.62150.40390.49670.6761

.

.

1.9

-0.34441.0000-0.47500.3096-0.35390.19710.35710.26000.1570

3.9

4.8-0.47501.00000.33580.58910.50560.32

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1