===2012.06.22更新================================
根據matlab文件
pca 的指令是使用princomp
有用到的應該是這行指令:
[COEFF,SCORE,latent] = princomp(a) <----------指令
COEFF =
0.4414 -0.1904 -0.3198 0.8165 0
0.4394 -0.3621 0.8220 -0.0000 -0.0000
0.4716 0.8719 0.1319 -0.0000 0.0000
0.4414 -0.1904 -0.3198 -0.4082 -0.7071
0.4414 -0.1904 -0.3198 -0.4082 0.7071
SCORE =
-10.1968 0.1379 -0.0841 0.0000 0.0000
-7.9615 0.0765 -0.0895 0.0000 0.0000
-5.7263 0.0152 -0.0950 -0.0000 -0.0000
-3.4911 -0.0461 -0.1004 0.0000 -0.0000
-0.8164 -0.4696 0.7162 0.0000 -0.0000
0.9793 -0.1688 -0.1113 0.0000 -0.0000
3.2146 -0.2302 -0.1168 0.0000 0.0000
6.3930 1.4522 0.1417 0.0000 -0.0000
7.6850 -0.3529 -0.1277 0.0000 -0.0000
9.9202 -0.4142 -0.1331 0.0000 0.0000
latent =
46.9598
0.3038
0.0697
0.0000
0.0000
COEFF 是指 eigenvector
latent 是指 eigenvalue
然後 SCORE ......好像是一種對應的觀察分數(亂翻英文orz)
但是真的讓我做完作業的資料是這份大陸的資料:
(雖然專有名詞我真的看無,翻譯真的太特別...)
http://wenku.baidu.com/view/bf64f435a32d7375a417804d.html
>> C = cov(a)
C =
9.1667 9.1111 9.7222 9.1667 9.1667
9.1111 9.1556 9.6444 9.1111 9.1111
9.7222 9.6444 10.6778 9.7222 9.7222
9.1667 9.1111 9.7222 9.1667 9.1667
9.1667 9.1111 9.7222 9.1667 9.1667
>> [P,Lambda] = eig(C)
P =
0.1698 -0.7987 0.3198 0.1904 0.4414
-0.0000 0.0000 -0.8220 0.3621 0.4394
0.0000 0.0000 -0.1319 -0.8719 0.4716
0.6068 0.5463 0.3198 0.1904 0.4414
-0.7765 0.2523 0.3198 0.1904 0.4414
Lambda =
-0.0000 0 0 0 0
0 0.0000 0 0 0
0 0 0.0697 0 0
0 0 0 0.3038 0
0 0 0 0 46.9598
>> S1 = a*P
S1 =
0 -0.0000 0.0054 0.0613 2.2352
0 -0.0000 0.0109 0.1227 4.4704
0 -0.0000 0.0163 0.1840 6.7057
0 -0.0000 0.0218 0.2454 8.9409
-0.0000 -0.0000 -0.7948 0.6688 11.6155
0 -0.0000 0.0327 0.3681 13.4113
0 -0.0000 0.0381 0.4294 15.6465
0.0000 0.0000 -0.2203 -1.2530 18.8250
0 -0.0000 0.0490 0.5521 20.1170 -0.0000 -0.0000 0.0545 0.6134 22.3522
然後roger用這個投影片教我
http://iem.csu.edu.tw/member/hunght/%E6%B4%AA%E5%83%96%E9%BB%9B%E8%80%81%E5%B8%AB%E6%95%99%E6%9D%90(IEM)/Principal%20Component%20Analysis.pdf
因為我要將資料降成一維
所以我要找最大的 eigenvalue 所對應的 eigenvector
也就是 Lambda 裡的最大值 46.9598 所對應到的P 是
0.4414
0.4394
0.4716
0.4414
0.4414
p.s http://www.mathworks.com/help/techdoc/ref/eig.html
↑↑↑這裡說對應的是columns
心情:
應該是做好了...
今天好累喔.......
還有...... roger
生日快樂
===============================================
===2012.06.21更新=================================
老師的作業....../口\
基本使用方法
google 搜尋 "matlab 張智星" 就會有很基本的一些指令 <---- 這是學長告訴我的
http://www.cs.nthu.edu.tw/~jang/mlbook/ch1/
有用到的地方是
取出矩陣特定的值
例如矩陣A等於
A = [1 2 3;4 5 6; 7 8 9] <----指令
A=
1 2 3
4 5 6
7 8 9
取出部份矩陣B
B = A(2,1:3) % <----指令
A=
4 5 6
所以如果要取值的就是
B = A(1:3,2) <-------指令
A=
2
5
8
還有我自己找的
http://www.ecaa.ntu.edu.tw/weifang/matlab/matlabintro5.htm
如果要取斜對角
diag(A) <-------------指令
ans =
1
5
9
diag(ans) <---------------指令
ans =
1 0 0
0 5 0
0 0 9
對SVD降維方法
http://www.wretch.cc/blog/xken831/3723197 <--------這就是答案啊!!!!!
http://tiredapple.pixnet.net/blog/post/4756622-svd%E5%A5%87%E7%95%B0%E5%80%BC%E5%88%86%E8%A7%A3
matlab 指令打法
http://www.wretch.cc/blog/xken831/3723194
對一個矩陣a(已經先打好了)做SVD我們可以在matlab打
[U D V] = svd(a) <-----------指令
U=
左矩陣, 由a^a(T)的eigenvalue所對應的eigenvector所形成 // p.s ----> a(T) : a的transpose matrix
D=
是一個a^a(T)的eigenvalue開根號的對角矩陣
V=
a(T)^a的eigenvalues所對應的eigenvector所形成的矩陣
p.s U D V 三個數可以隨便亂打,總之就是代表SVD那三個矩陣
******************************************************
PCA
什麼是PCA?
http://www.caogenit.com/caogenxueyuan/yingyongfangxiang/rengongzhineng/1343.html
↑↑↑ 這網址後面的圖掛掉了,而且還是簡體,但還是可以參考,因為我真的不知道PCA是什麼啊啊啊啊啊啊啊啊啊啊啊啊啊啊
在matlab如果要用pca的話是用princomp 這個指令
http://www.mathworks.com/help/toolbox/stats/princomp.html
心情:
作業...遲交的很誇張
但是我還是想要學會阿......
加油呀!!!
===========================================
- Jun 21 Thu 2012 02:19
matlab log
close
全站熱搜
留言列表