在网上下到一个程序:
里面有个函数是princomp 可能是因为matlab 版本的问题:
我的matlab(14a) 只能支持pca,但是要把princomp 转成pca 貌似还是需要一点小技巧的:
参考博客:http://www.cnblogs.com/haore147/p/3630002.html
princomp 的用法为:
[COEFF,SCORE,latent,tsquare] = princomp(X)
我们以
X=[ 7 26 6 60
1 29 15 52
11 56 8 20
11 31 8 47
7 52 6 33
11 55 9 22
3 71 17 6
1 31 22 44
2 54 18 22
21 47 4 26
1 40 23 34
11 66 9 12
10 68 8 12]
因为后面的主要是使用了score ,所以我们的目的是找出来怎么样 利用pca 函数算出来score
在晚上找出来的计算方法:
COEFF(T)为特征向量矩阵 SCORE(Y)为得分矩阵 LATENT(R)为特征值矩阵 X的方差协方差矩阵为S,则
S=cov(x)
那么S 的结果为:
S=[
34.6026 20.9231 -31.0513 -24.1667
20.9231 242.1410 -13.8782 -253.4167
-31.0513 -13.8782 41.0256 3.1667
-24.1667 -253.4167 3.1667 280.1667
]T*R*T'=S, T'*S*T=R Y=T'*X
[U,mu,vars]=pca(X) 我们得到的结果是:
U =
0.1289 0.5651 0.2445 -0.0000
0.1453 0.4630 -0.1598 -0.0000
0.3097 -0.0673 0.1482 -0.0000
0.1418 0.3611 0.2336 -0.0000
0.3035 0.1325 0.1598 -0.0000
0.3000 -0.0418 0.1283 -0.0000
0.4139 -0.2805 -0.3149 0.0000
0.1384 0.3390 -0.3772 0.0000
0.3007 -0.0152 -0.3150 0.0000
0.2236 0.0005 0.4952 -0.0000
0.1959 0.1787 -0.4359 0.0000
0.3738 -0.2076 0.0979 0.0000
0.3939 -0.2079 0.1040 0
此处的U 即使 princomp 里面的 score 。
但是我们发现其实 score 的值与PCA 求出来的U 的值不是一样的。
score =
36.8218 -6.8709 -4.5909 0.3967
29.6073 4.6109 -2.2476 -0.3958
-12.9818 -4.2049 0.9022 -1.1261
23.7147 -6.6341 1.8547 -0.3786
-0.5532 -4.4617 -6.0874 0.1424
-10.8125 -3.6466 0.9130 -0.1350
-32.5882 8.9798 -1.6063 0.0818
22.6064 10.7259 3.2365 0.3243
-9.2626 8.9854 -0.0169 -0.5437
-3.2840 -14.1573 7.0465 0.3405
9.2200 12.3861 3.4283 0.4352
-25.5849 -2.7817 -0.3867 0.4468
-26.9032 -2.9310 -2.4455 0.4116
我就把U暂时代替score。
score 与 U 之间有什么关系. 需要进一步探究。