NB. Principal Component Analysis NB. JAPLA JAN2009 NB. written by Giichiro Suzuki itr=:3 :0 NB.Iteration m=.m +/ .*m=.m%>./|,m=.m+/ .*m=.>{:y (v%>./|v=.(>{.y)+/ .*m);m ) mev=:3 :0 NB. igenvalue & igenvector v=.v%%:+/*:v=.>{.itr^:20(1;y) (+/(y+/ . *v)%v*#v),v ) red=:3 : 'y-({.lv)**/~}.lv=.mev y' evs=:4 :'mev"2(red^:(i.x))y' NB. 左引数は主成分の個数で右引数は行列 NB. 出力は固有値と固有ベクトル stand=:3 :0 NB. stadadyzation of data s=.y-(k=.$y)$(+/%#)y s%k$%:((<0 1)|:(|:s)+/ .*s)%{.k ) corm=:3 :'((|:s)+/ .*s)%#s=.stand y' NB. 相関行列を出力する関数 pca=:4 :0 NB. Principal Component Analysis s=.y-(k=.$y)$(+/%#)y s=.s%k$%:((<0 1)|:(|:s)+/ .*s)%{.k ev=.x evs((|:s)+/ .*s)%{.k t=.'e-value & vector :',7j3":ev t,'pc-values :',6j2":s+/ .*}.|:ev ) STYLE=:,:165 53 86 56 92 STYLE=:STYLE,160 47 84 52 92 STYLE=:STYLE,166 55 86 64 89 STYLE=:STYLE,164 56 90 60 95 STYLE=:STYLE,168 55 87 56 87 STYLE=:STYLE,164 54 87 57 92 STYLE=:STYLE,168 54 94 58 97 STYLE=:STYLE,169 55 88 57 92 STYLE=:STYLE,169 53 86 58 93 STYLE=:STYLE,166 56 84 57 90 STYLE=:STYLE,165 53 85 55 90 STYLE=:STYLE,163 49 84 59 90 STYLE=:STYLE,164 52 87 58 90 STYLE=:STYLE,167 53 86 59 88 STYLE=:STYLE,169 58 89 60 90 STYLE=:STYLE,169 51 84 60 90 STYLE=:STYLE,166 50 86 59 87 STYLE=:STYLE,168 53 88 60 88 STYLE=:STYLE,165 54 88 62 90 STYLE=:STYLE,167 50 88 58 89 STYLE=:STYLE,170 55 88 60 90 STYLE=:STYLE,168 57 84 62 92 STYLE=:STYLE,168 56 85 62 94 STYLE=:STYLE,163 52 83 60 88