主成分分析matlab程序.doc

合集下载

主成分分析 MATLAB代码

主成分分析 MATLAB代码
T=L(:,1)+L(:,2)+L(:,3)+L(:,4); %计算T统计量
%特征向量图(效果等价于主成分载荷图)
figure(4); %创造第二个图形窗口
e1=-E(:,1);e2=-E(:,2); %提取特征向量并转换符号
Co2=Co1+A(:,2).^2; %提取2个主成分的公因子方差
Co3=Co2+A(:,3).^2; %提取3个主成分的公因子方差
Co4=Co3+A(:,4).^2; %提取4个主成分的公因子方差
Rz=cov(F); %计算协方差矩阵
Rz=corrcoef(F); %计算相关系数矩阵
Rz=corrcoef(Z); %计算相关系数矩阵
%计算非标准化数据协方差矩阵的三种方法
Covz=Z'*Z/(n-1); %计算协方差矩阵
Covz=cov(Z); %计算协方差矩阵
%计算主成分得分相关系数的四种方法
Rz=F'*F/(n-1); %计算相关系数矩阵
grid on %添加网格
%几个用于检验的语句
%计算再生相关系数矩阵
Rp=H*H'; %计算再生相关矩阵
Re=R-Rp; %计算相关矩阵的残差矩阵
%综合得分
S=Z(:,1)+Z(:,2)+Z(:,3)+Z(:,4) %非标准化得分四列加和
S1=F(:,1)*eigv(1)^0.5+F(:,2)*eigv(2)^0.5+F(:,3)*eigv(3)^0.5+F(:,4)*eigv(4)^0.5
%计算T平方统计量(2)
eigv=diag(G); %提取角矩阵的对角线元素

matlab主成分分析案例

matlab主成分分析案例

1•设随机向量X= (X i , X 2, X 3)T 的协方差与相关系数矩阵分别为1 4,R4 25分别从,R 出发,求X 的各主成分以及各主成分的贡献率并比较差异况。

解答: >> S=[1 4;4 25];>> [P C,vary,ex plain ed]=p cacov(S); 总体主成分分析:>> [P C,vary,ex plain ed]=p cacov(S) 主成分交换矩阵: PC =-0.1602 -0.9871 -0.9871 0.1602 主成分方差向量: vary = 25.6491 0.3509各主成分贡献率向量 explained = 98.6504 1.3496则由程序输出结果得出,X 的主成分为: Y 1=-0.1602X 1-0.9871X 2 Y 2=-0.9871X 1+0.1602X 2两个主成分的贡献率分别为:98.6504%, 1.3496%;贝U 若用第一个主成分代替原 来的变量,信息损失率仅为1.3496,是很小的。

2.根据安徽省2007年各地市经济指标数据,见表 5.2,求解: (1) 利用主成分分析对17个地市的经济发展进行分析,给出排名; (2) 此时能否只用第一主成分进行排名?为什么?1 0.8 0.8 11.0000 0.9877 0.9980 0.9510 0.9988 0.9820 0.4281 0.9999解答:(1)>> clear>> A=[491.70,380.31,158.39,121.54,22.74,439.65,344.44,17.43;21.12,30.55,6.40,12.40,3.31,21.17,17.71,2.03;1.71,2.35,0.57,0.68,0.13,1.48,1.36,-0.03;9.83,9.05,3.13,3.43,0.64,8.76,7.81,0.54;64.06,77.86,20.63,30.37,5.96,63.57,52.15,4.71;30.38,46.90,9.19,9.83,17.87,28.24,21.90,3.80;31.20,70.07,8.93,18.88,33.05,31.17,26.50,2.84;79.18,62.09,20.78,24.47,3.51,71.29,59.07,6.78;47.81,40.14,17.50,9.52,4.14,45.70,34.73,4.47;104.69,78.95,29.61,25.96,5.39,98.08,84.81,3.81;21.07,17.83,6.21,6.22,1.90,20.24,16.46,1.09;214.19,146.78,65.16,41.62,4.39,194.98,171.98,11.05;31.16,27.56,8.80,9.44,1.47,28.83,25.22,1.05;12.76,14.16,3.66,4.07,1.57,11.95,10.24,0.73;6.45,5.37,2.39,2.20,0.40,5.97,4.79,0.52;39.43,44.60,15.17,15.72,3.27,36.03,27.87,3.48;5.02,3.62,1.63,1.42,0.53,4.45,4.04,0.02];得到的相关系数矩阵为:>> R=corrcoef(A)R =0.9877 1.0000 0.9884 0.9947 0.5438 0.9885 0.9835 0.94850.9988 0.9884 1.0000 0.9824 0.4294 0.9984 0.9948 0.94620.9820 0.9947 0.9824 1.0000 0.5051 0.9829 0.9763 0.93910.4281 0.5438 0.4294 0.5051 1.0000 0.4311 0.4204 0.45570.9999 0.9885 0.9984 0.9829 0.4311 1.0000 0.9986 0.95300.9980 0.9835 0.9948 0.9763 0.4204 0.99861.0000 0.95690.9510 0.9485 0.9462 0.9391 0.4557 0.9530 0.9569 1.0000计算特征值与特征向量:>> [v,d]=eig(corrcoef(A))V 一-0.3723 0.1179 0.1411 -0.2543 -0.0459 0.5917 -0.5641 0.3041-0.3741 -0.0343 0.1606 0.2247 -0.1514 -0.6284 -0.1535 0.5841-0.3719 0.1152 0.1957 -0.1954 -0.6909 -0.1351 0.0383 -0.5244-0.3713 0.0096 0.2368 0.7875 0.2168 0.2385 0.0303 -0.2845-0.1949 -0.9689 -0.0004 -0.1242 0.0119 0.0628 0.0151 -0.0593-0.3725 0.1143 0.1222 -0.2302 0.0924 0.2259 0.7946 0.2988-0.3716 0.1272 0.0353 -0.3800 0.6591 -0.3521 -0.1557 -0.3428-0.3613 0.0596 -0.9185 0.1165 -0.0872 0.0302 0.0022 -0.0096d =7.11350 00 00 0 0.77700.08100 0.02370 0.00410 0 0 0 0.00000 0 0.0001各主成分贡献率:>> w=sum(d)/sum(sum(d))计算各个主成分得分:>> F=[A-ones(17,1)*mean(A)]*v(:,8)224.3503 -24.0409 -40.0941 -35.9075 4.7573 -12.6102 -2.85731.8038 -13.9012 13.4541 -29.3847 62.3383 -23.3175 -32.4285 -38.1309 -14.8637 -39.1675>> [F1,I1]=sort(F,'descend')F1按从大到小的顺序给个主成分得分排名: F1 = 224.35030.8892 0.0971 0.0000 0.00000.0101 0.0030 0.0005 0.00010.000662.338313.45414.75731.8038 -2.8573 12.6102 13.9012 14.8637 23.3175 24.0409 29.3847 32.4285 35.9075 38.1309 39.1675 -40.0941I1 给出各个名次的序号:I1 =1121058769161321114415173 >> [F2,I2]=sort(I1)F2 =34567891011121314151617I2 给出个城市排名,即所求排名:I2 =1111714476583122101315916(2)由于第一主成分的贡献率大于80%,其他各成分贡献率都太小,所以只能用第一主成分进行排名。

matlab主成分分析法[统计学经典理论]

matlab主成分分析法[统计学经典理论]

§10.利用Matlab 编程实现主成分分析1.概述Matlab 语言是当今国际上科学界 (尤其是自动控制领域) 最具影响力、也是最有活力的软件。

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

它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、与其他程序和语言的便捷接口的功能。

Matlab 语言在各国高校与研究单位起着重大的作用。

主成分分析是把原来多个变量划为少数几个综合指标的一种统计分析方法,从数学角度来看,这是一种降维处理技术。

1.1主成分分析计算步骤 ① 计算相关系数矩阵 ⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=pp p p p p r r r r r r r r r R 212222111211 (1) 在(3.5.3)式中,r ij (i ,j=1,2,…,p )为原变量的xi 与xj 之间的相关系数,其计算公式为 ∑∑∑===----=n k n k j kj i ki n k j kj i ki ij x x x x x x x x r 11221)()())(( (2) 因为R 是实对称矩阵(即r ij =r ji ),所以只需计算上三角元素或下三角元素即可。

② 计算特征值与特征向量首先解特征方程0=-R I λ,通常用雅可比法(Jacobi )求出特征值),,2,1(p i i =λ,并使其按大小顺序排列,即0,21≥≥≥≥pλλλ ;然后分别求出对应于特征值i λ的特征向量),,2,1(p i e i =。

这里要求i e =1,即112=∑=p j ij e ,其中ij e 表示向量i e 的第j 个分量。

③ 计算主成分贡献率及累计贡献率 主成分i z 的贡献率为),,2,1(1p i p k k i =∑=λλ 累计贡献率为 ),,2,1(11p i pk k i k k =∑∑==λλ一般取累计贡献率达85—95%的特征值m λλλ,,,21 所对应的第一、第二,…,第m (m ≤p )个主成分。

主成分分析及matlab程序

主成分分析及matlab程序
从数学角度来看,主成分分析是一种降维 处理技术。
举例:
某人要做一件上衣要测量很多尺寸,如身长、 袖长、胸围、腰围、肩宽、肩厚等十几项指标, 但某服装厂要生产一批新型服装绝不可能把尺寸 的型号分得过多 ,而是从多种指标中综合成几 个少数的综合指标,做为分类的型号,利用主成 分分析将十几项指标综合成3项指标,一项是反 映长度的指标,一项是反映胖瘦的指标,一项是 反映特体的指标。
2195.7 1408 422.61 4797 1011.8 119.0
5381.72 2699 1639.8 8250 656.5 114.0
1606.15 1314 382.59 5105 556.0 118.4
364.17 1814 198.35 5340 232.1 113.5
3534.00 1261 822.54 4645 902.3 118.5
111.6 1396.35
116.4 554.97
111.3 64.33
117.0 1431.81
117.2 324.72
118.1 716.65
114.9
5.57
117.0 600.98
116.5 468.79
116.3 105.80
115.3 114.40
116.7 428.76
1.将原始数据标准化。 2.建立指标之间的相关系数阵R如下:
正交化特征向量(通常用Jacobi法求特征向量):
a11
a12
1
=
a21
,
2
=
a22
,
a
p1
a
p
2
a1p
,
p
=
a2
p
,
a

主成分分析Matlab源码分析

主成分分析Matlab源码分析

主成分分析源程序代码分析function[pc, score, latent, tsquare] = princomp(x);% PRINCOMP Principal Component Analysis (centered and scaled data).% [PC, SCORE, LATENT, TSQUARE] = PRINCOMP(X) takes a data matri x X and% returns the principal components in PC, the so-called Z-scores in SCORE S,% the eigenvalues of the covariance matrix of X in LATENT, and Hotelling 's% T-squared statistic for each data point in TSQUARE.% Reference: J. Edward Jackson, A User's Guide to Principal Components % John Wiley & Sons, Inc. 1991 pp. 1-25.% B. Jones 3-17-94% Copyright 1993-2002 The MathWorks, Inc.% $Revision: 2.9 $ $Date: 2002/01/17 21:31:45 $[m,n] = size(x); % 得到矩阵的规模,m行,n列r = min(m-1,n); % max possible rank of x% 该矩阵最大的秩不能超过列数,% 也不能超过行数减1avg = mean(x); % 求每一列的均值,付给一个n维行向量centerx = (x - avg(ones(m,1),:));% x的每个元素减去该列的均值,% 使样本点集合重心与坐标原点重合[U,latent,pc] = svd(centerx./sqrt(m-1),0);% “经济型”的奇异值分解score = centerx*pc; % 得分矩阵即为原始矩阵乘主成分矩阵if nargout < 3, return; endlatent = diag(latent).^2; % 将奇异值矩阵转化为一个向量if (r<N)latent = [latent(1:r); zeros(n-r,1)];score(:,r+1:end) = 0;endif nargout < 4, return; endtmp = sqrt(diag(1./latent(1:r)))*score(:,1:r)';tsquare = sum(tmp.*tmp)';主成分分析[Matlab版]function main()%*************主成份分析************%读入文件数据X=load('data.txt');%==========方法1:求标准化后的协差矩阵,再求特征根和特征向量=================%标准化处理[p,n]=size(X);for j=1:nmju(j)=mean(X(:,j));sigma(j)=sqrt(cov(X(:,j)));endfor i=1:pfor j=1:nY(i,j)=(X(i,j)-mju(j))/sigma(j);endendsigmaY=cov(Y);%求X标准化的协差矩阵的特征根和特征向量[T,lambda]=eig(sigmaY);disp('特征根(由小到大):');disp(lambda);disp('特征向量:');disp(T);%方差贡献率;累计方差贡献率Xsum=sum(sum(lambda,2),1);for i=1:nfai(i)=lambda(i,i)/Xsum;endfor i=1:npsai(i)= sum(sum(lambda(1:i,1:i),2),1)/Xsum;enddisp('方差贡献率:');disp(fai);disp('累计方差贡献率:');disp(psai);%综合评价....略%+============方法2:求X的相关系数矩阵,再求特征根和特征向量================%X的标准化的协方差矩阵就是X的相关系数矩阵R=corrcoef(X);%求X相关系数矩阵的特征根和特征向量[TR,lambdaR]=eig(R);disp('特征根(由小到大):');disp(lambdaR);disp('特征向量:');disp(TR);。

matlab主成分分析案例

matlab主成分分析案例

1.设随机向量X=(X 1,X 2,X 3)T 的协方差与相关系数矩阵分别为⎪⎪⎭⎫ ⎝⎛=∑25441,⎪⎪⎭⎫⎝⎛=18.08.01R 分别从∑,R 出发,求X 的各主成分以及各主成分的贡献率并比较差异况。

解答:>> S=[1 4;4 25];>> [PC,vary,explained]=pcacov(S); 总体主成分分析:>> [PC,vary,explained]=pcacov(S) 主成分交换矩阵: PC =-0.1602 -0.9871 -0.9871 0.1602 主成分方差向量: vary = 25.6491 0.3509各主成分贡献率向量 explained = 98.6504 1.3496则由程序输出结果得出,X 的主成分为: Y 1=-0.1602X 1-0.9871X 2 Y 2=-0.9871X 1+0.1602X 2两个主成分的贡献率分别为:98.6504%,1.3496%;则若用第一个主成分代替原来的变量,信息损失率仅为1.3496,是很小的。

2.根据安徽省2007年各地市经济指标数据,见表5.2,求解: (1)利用主成分分析对17个地市的经济发展进行分析,给出排名; (2)此时能否只用第一主成分进行排名?为什么?解答:(1)>> clear>> A=[491.70,380.31,158.39,121.54,22.74,439.65,344.44,17.43;21.12,30.55,6.40,12.40,3.31,21.17,17.71,2.03;1.71,2.35,0.57,0.68,0.13,1.48,1.36,-0.03;9.83,9.05,3.13,3.43,0.64,8.76,7.81,0.54;64.06,77.86,20.63,30.37,5.96,63.57,52.15,4.71;30.38,46.90,9.19,9.83,17.87,28.24,21.90,3.80;31.20,70.07,8.93,18.88,33.05,31.17,26.50,2.84;79.18,62.09,20.78,24.47,3.51,71.29,59.07,6.78;47.81,40.14,17.50,9.52,4.14,45.70,34.73,4.47;104.69,78.95,29.61,25.96,5.39,98.08,84.81,3.81;21.07,17.83,6.21,6.22,1.90,20.24,16.46,1.09;214.19,146.78,65.16,41.62,4.39,194.98,171.98,11.05;31.16,27.56,8.80,9.44,1.47,28.83,25.22,1.05;12.76,14.16,3.66,4.07,1.57,11.95,10.24,0.73;6.45,5.37,2.39,2.20,0.40,5.97,4.79,0.52;39.43,44.60,15.17,15.72,3.27,36.03,27.87,3.48;5.02,3.62,1.63,1.42,0.53,4.45,4.04,0.02];得到的相关系数矩阵为:>> R=corrcoef(A)R =1.0000 0.9877 0.9988 0.9820 0.4281 0.9999 0.9980 0.95100.9877 1.0000 0.9884 0.9947 0.5438 0.98850.9835 0.94850.9988 0.9884 1.0000 0.9824 0.4294 0.99840.9948 0.94620.9820 0.9947 0.9824 1.0000 0.5051 0.98290.9763 0.93910.4281 0.5438 0.4294 0.5051 1.0000 0.43110.4204 0.45570.9999 0.9885 0.9984 0.9829 0.4311 1.00000.9986 0.95300.9980 0.9835 0.9948 0.9763 0.4204 0.99861.0000 0.95690.9510 0.9485 0.9462 0.9391 0.4557 0.95300.9569 1.0000计算特征值与特征向量:>> [v,d]=eig(corrcoef(A))v =-0.3723 0.1179 0.1411 -0.2543 -0.0459 0.5917-0.5641 0.3041-0.3741 -0.0343 0.1606 0.2247 -0.1514 -0.6284-0.1535 0.5841-0.3719 0.1152 0.1957 -0.1954 -0.6909 -0.13510.0383 -0.5244-0.3713 0.0096 0.2368 0.7875 0.2168 0.23850.0303 -0.2845-0.1949 -0.9689 -0.0004 -0.1242 0.0119 0.06280.0151 -0.0593-0.3725 0.1143 0.1222 -0.2302 0.0924 0.22590.7946 0.2988-0.3716 0.1272 0.0353 -0.3800 0.6591 -0.3521-0.1557 -0.3428-0.3613 0.0596 -0.9185 0.1165 -0.0872 0.03020.0022 -0.0096d =7.1135 0 0 0 0 0 0 00 0.7770 0 0 0 0 0 00 0 0.0810 0 0 0 0 00 0 0 0.0237 0 0 0 00 0 0 0 0.0041 00 00 0 0 0 0 0.0006 0 00 0 0 0 0 00.0000 00 0 0 0 0 0 0 0.0001各主成分贡献率:>> w=sum(d)/sum(sum(d))w =0.8892 0.0971 0.0101 0.0030 0.0005 0.00010.0000 0.0000计算各个主成分得分:>> F=[A-ones(17,1)*mean(A)]*v(:,8)F =224.3503-24.0409-40.0941-35.90754.7573-12.6102-2.85731.8038-13.901213.4541-29.384762.3383-23.3175-32.4285-38.1309-14.8637-39.1675>> [F1,I1]=sort(F,'descend')F1按从大到小的顺序给个主成分得分排名:F1 =224.350362.338313.45414.75731.8038-2.8573-12.6102-13.9012-14.8637-23.3175-24.0409-29.3847-32.4285-35.9075-38.1309-39.1675-40.0941I1给出各个名次的序号:I1 =1121058769161321114415173>> [F2,I2]=sort(I1)F2 =1234567891011121314151617I2给出个城市排名,即所求排名:I2 =1111714476583122101315916(2)由于第一主成分的贡献率大于80%,其他各成分贡献率都太小,所以只能用第一主成分进行排名。

Matlab主成分分析:详解+实例

主成分分析(PCA)中我们的目标是找到 一个能使个体差异达到最大的变量线性 组合。
主成分分析
总结:
主 原始变量 目标

X1, , Xm
主成分
Z1, ,Zp

线性组合

Z1, , Zp 互不相关
析 的
信息不重合 按‘重要性’排序
求解主 成分

Z1, , Zp
想 Var(Z1) Var(Z2 ) Var(Zp )
r
i r 2(z j , xi ),
j1
这里r(z j , xi )表示zj 与 xi 的相关系数。
主成分分析
1 2 0
例1 设 x [ x1, x2 , x3 ]T 且 R 2 5 0
0 0 0
则可算得1 5.8284,2 0.1716,如果我们仅取第
一个主成分,由于其累积贡献率已经达到97.14%, 似乎很理想了,但如果进一步计算主成分对原变量的
c1 x1+ c2 x2+… +cp xp
我们希望选择适当的权重能更好地区分学生的 成绩. 每个学生都对应一个这样的综合成绩, 记 为s1, s2,…, sn , n为学生人数. 如果这些值很分散, 表明区分好, 即是说, 需要寻找这样的加权, 能使 s1, s2,…, sn 尽可能的分散, 下面来看的统计定义.
x5:交通和通讯,
x6:娱乐教育文化服务,
x7:居住,
x8:杂项商品和服务.
对居民消费数据做主成分分析.
聚类分析
聚类分析
聚类分析
计算的Matlab程序如下:
clc,clear load czjm1999.txt
%把原始数据保存在纯文本文件czjm1999.txt中

机器学习(MATLAB版)ch09-主成分分析法 教学课件


PCA算法的MATLAB实现
输出参数说明: (1)coe 为主成分系数,就是散布矩阵(协方差矩阵)的特征量矩阵(也就是投影矩阵)。完整输出的情况下是 一个 m x m 阵。每都是一个特征量,按对应的特征值的大小从大到小进行排列。 (2) score 为nx m 阵,满足 score =X*coe。注意,如果使用 pca 时默认中心化(即不对Centered’设置 oF),拿 X*coe 和 score 对比时,必须将X中心化后再乘以 coeft,然后再和 score 对比。同样,如果 pca 使用的是默认值,恢复的X = score *coeff’ (注意转置)是中心化后的数据。 (3)latent 为主成分方差,也就是各特征向量对应的特征值,从大到小进行排列。 (4) tsquared 为t2统计量。 (5)explained 为每一个主成分所贡献的比例,可以更直观地选择所需要降维的维数。 (6)mu为X 按列的均值,仅当Centered’置于on’(默认值)时才会返回此变量。
PCA算法的MATLAB实现
②Centered’(是否中心化),该参数有两种取值:(a)on’(默认中心化)(b)ofF该参数的作用是选择是否对 数据进行中心化,即数据的特征是否进行零均值化(即按列减去均值,如果选择了on’,则可用 score*coef”恢复中心化后的;若选择了of,则可用 score*coef’恢复原始的 X。 ③‘Economy’(经济模式),该参数有两种取值:(a)on’(默认)b)of。有时候输出的 coeff (mx m 矩阵)过 大,而且是没有必要的(因为要降维),所以可以只输出 coeff(以及 score,latent)的前l列,l是低维空间的 维数,这个参数值默认是on’。如果要看见完整的 PCA 结果,则可以设置为“off”。 ④NumComponents’(指定的成分数)这个参数有两种取值:(a)number of variables(默认),(b)scalar integer。输出指定的成分数是更为灵活的 Economy,但是经过试验发现指定成分数仅在小于时有效,大 于时无效。默认是 number of variables (即m,特征个数)。

主成分分析matlab程序

Matlab编程实现主成分分析.程序结构及函数作用在软件Matlab中实现主成分分析可以采取两种方式实现:一是通过编程来实现;二是直接调用Matlab种自带程序实现。

下面主要主要介绍利用Matlab 的矩阵计算功能编程实现主成分分析。

1程序结构2函数作用——用总和标准化法标准化矩阵——计算相关系数矩阵;计算特征值和特征向量;对主成分进行排序;计算各特征值贡献率;挑选主成分(累计贡献率大于85%),输出主成分个数;计算主成分载荷——计算各主成分得分、综合得分并排序——读入数据文件;调用以上三个函数并输出结果3.源程序总和标准化法标准化矩阵%,用总和标准化法标准化矩阵function std=cwstd(vector)cwsum=sum(vector,1); %对列求和[a,b]=size(vector); %矩阵大小,a为行数,b为列数for i=1:afor j=1:bstd(i,j)= vector(i,j)/cwsum(j);endend计算相关系数矩阵%function result=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')for z=1:length(y)newy(z)=y(length(y)+1-z);endfprintf('%g\n',newy)rate=y/sum(y);fprintf('\n贡献率:\n')newrate=newy/sum(newy)sumrate=0;newi=[];for k=length(y):-1:1sumrate=sumrate+rate(k);newi(length(y)+1-k)=i(k);if sumrate> break;endend %记下累积贡献率大85%的特征值的序号放入newi中fprintf('主成分数:%g\n\n',length(newi));fprintf('主成分载荷:\n')for p=1:length(newi)for q=1:length(y)result(q,p)=sqrt(newval(newi(p)))*vec(q,newi(p));endend %计算载荷disp(result)%,计算得分function score=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为排序结果%function print=cwprint(filename,a,b);%filename为文本文件文件名,a为矩阵行数(样本数),b为矩阵列数(变量指标数)fid=fopen(filename,'r')vector=fscanf(fid,'%g',[a b]);fprintf('标准化结果如下:\n')v1=cwstd(vector)result=cwfac(v1);cwscore(v1,result);4.程序测试例题原始数据中国大陆35个大城市某年的10项社会经济统计指标数据见下表。

主成分分析和matlab实现共33页文档

10、 Nhomakorabea倚













谢谢你的阅读
❖ 知识就是财富 ❖ 丰富你的人生
71、既然我已经踏上这条道路,那么,任何东西都不应妨碍我沿着这条路走下去。——康德 72、家庭成为快乐的种子在外也不致成为障碍物但在旅行之际却是夜间的伴侣。——西塞罗 73、坚持意志伟大的事业需要始终不渝的精神。——伏尔泰 74、路漫漫其修道远,吾将上下而求索。——屈原 75、内外相应,言行相称。——韩非
文 家 。汉 族 ,东 晋 浔阳 柴桑 人 (今 江西 九江 ) 。曾 做过 几 年小 官, 后辞 官 回家 ,从 此 隐居 ,田 园生 活 是陶 渊明 诗 的主 要题 材, 相 关作 品有 《饮 酒 》 、 《 归 园 田 居 》 、 《 桃花 源 记 》 、 《 五 柳先 生 传 》 、 《 归 去来 兮 辞 》 等 。
主成分分析和matlab实现
6













7、翩翩新 来燕,双双入我庐 ,先巢故尚在,相 将还旧居。
8













9、 陶渊 明( 约 365年 —427年 ),字 元亮, (又 一说名 潜,字 渊明 )号五 柳先生 ,私 谥“靖 节”, 东晋 末期南 朝宋初 期诗 人、文 学家、 辞赋 家、散
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Matlab 编程实现主成分分析. 程序结构及函数作用在软件 Matlab 中实现主成分分析可以采取两种方式实现:一是通过编程来实现;二是直接调用 Matlab 种自带程序实现。

下面主要主要介绍利用 Matlab 的矩阵计算功能编程实现主成分分析。

1程序结构主函数子函数2函数作用——用总和标准化法标准化矩阵——计算相关系数矩阵;计算特征值和特征向量;对主成分进行排序;计算各特征值贡献率;挑选主成分(累计贡献率大于 85%),输出主成分个数;计算主成分载荷——计算各主成分得分、综合得分并排序——读入数据文件;调用以上三个函数并输出结果3.源程序总和标准化法标准化矩阵%,用总和标准化法标准化矩阵function std=cwstd(vector)cwsum=sum(vector,1);% [a,b]=size(vector);%for i=1:afor j=1:b 对列求和矩阵大小 ,a 为行数 ,b 为列数std(i,j)= vector(i,j)/cwsum(j);endend计算相关系数矩阵%function result=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')for z=1:length(y)newy(z)=y(length(y)+1-z);endfprintf('%g\n',newy)rate=y/sum(y);fprintf('\n贡献率: \n')newrate=newy/sum(newy)sumrate=0;newi=[];for k=length(y):-1:1sumrate=sumrate+rate(k);newi(length(y)+1-k)=i(k);if sumrate> break;endend % 记下累积贡献率大 85%的特征值的序号放入 newi 中 fprintf(' 主成分数: %g\n\n',length(newi)); fprintf(' 主成分载荷: \n')for p=1:length(newi)for q=1:length(y)result(q,p)=sqrt(newval(newi(p)))*vec(q,newi(p));endend%计算载荷disp(result)%,计算得分function score=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 为排序结果%function print=cwprint(filename,a,b);%filename 为文本文件文件名, a 为矩阵行数 ( 样本数 ) ,b 为矩阵列数 ( 变量指标数 )fid=fopen(filename,'r')vector=fscanf(fid,'%g',[a b]);fprintf('标准化结果如下: \n')v1=cwstd(vector)result=cwfac(v1);cwscore(v1,result);4.程序测试例题原始数据中国大陆 35 个大城市某年的10 项社会经济统计指标数据见下表。

非客运 货运 地方财 城乡居年底 农业 农 业 工业 政 民年底 城 总量 总量 市 人口 总产值 总产值预算内 储蓄余 名 总人口 ( 万 ( 万 称收入 ( 万 额( 万人 ) 比 ( 万元 ) ( 万元 ) 人 ) 吨 )( 万元 ) (%)元 ) 北8 1 843 19 999 20 45 2 790 26 8061 427 706 323 562 863 646 京天 91 501 22 6453 26 1 128 11 301津 136502 259 317 073 931在岗 职工人数 ( 万人 )在岗职工工资总额( 万元 )5 773 3012 254343石 家 22 918 6 885庄680768太3 236 0382 737原750呼和浩2365 343 816 452 特沈 9 1 295 5 826 阳418 733大61 879 8 426连739 385长 8 1 853 5 966 春210 343哈 尔 72 6634 186滨855 123上 142 069 54 529海 019 098南 1 989 199 13 072 京737 杭 61 414 12 000 州737 796宁 71 428 10 622波235 866合4 628 764 2 514肥125福3 2 152 6 555 州288 351厦 5 333 3745 751门124南8 688 289 2 305昌8812 1 7 095 929911 352 3488751 11 203 277 3 943 937 895 1002 2 105 783 1 396351 623 5887 159 016 782 412 567 919 99810 19 709 227 7 556780 187 7964 9 357 0964 803 810 532 7446 7 6 450720 520 481 443 020 6 44 4 318 25 971406 485 500 20014 11 664 299 5 680269 193 47217 11 449 5937 425 883 684 96722 10 5 246 215 298 501 723 3504 1 233 628 1 622 893 517 9318 7 467 524 5 030 851 190 2203 2 2 108 728 570 418 758 3313 3 167 714 2 640 674 189 460758 877654 023309 3371 152 811965 922 884 4471 309 1515 605 4451 3578611 180947824 034369 577680 607657 484479 ,555济 5 1 486 6 285 5 11 460 690 南302 882 915 775青3 2 382 11 492 13 17658 435岛320 036 408 038郑4 677 425 5 287 10 6387 252州601 433 768武9 1 211 7 506 9 15604 658汉291 085 793 442长7 1 146 3 098 8 5323 660沙367 179 706 718广4 1 600 23 348 22 23 1 761州738 139 007 854 499深1 299 662 20 368 8 4 1 847圳295 754 274 908南4 720 486 1 1495 3149 700宁691 130 293海4 44 815 717 461 5 2115 174口345 356重7 4 168 8 585 52 25898,9123780 525 441 124庆成 1 935 5 894 40 19561 189 1590 289 140 632都贵7 362 061 2 247 15 4197 908阳934 703 143昆 5 793 356 3 605 5 12 524 216 明729 604 042西4 739 905 3 665 10 9408 896安942 311 766兰5 259 444 2 940 1 4169 540州884 832 749西7 65 848 711 310 1 149 134宁746 469银9 171 603 661 226 2 174 758川106 193乌鲁木4 78 513 1 847 2 9254 870齐241 668 0414126970497804551353385748055346124420401811951990021909181626800909096974796841787748412790058639802641568855 051814 1032365508756696961704696 8481314766596 98630475941890338371 809198 13816068041200671419681842321885169550890219251178621517622运行结果>>cwprint('',35,10)fid =6数据标准化结果如下:v1 =相关系数矩阵 :std =特征向量 (vec) :vec =特征值 (val)val =0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0特征根排序:各主成分贡献率:newrate =第一、二主成分的载荷:1375637796第一、二、三、四主成分的得分:score =5 9 46 6 28 3 46 1 79 5 48 0 8 0。

相关文档
最新文档