Just My Life & My Work

這次直接使用原始資料來實做,
一共有3個class,
每個class有10個sample,
而sample為3維(x1,x2,x3),
test point有4個。

資料如下:

w1=[-5.01 -8.12 -3.68;
-5.43 -3.48 -3.54;
1.08 -5.52  1.66;
0.86 -3.78 -4.11;
-2.67  0.63  7.39;
4.94  3.29  2.08;
-2.51  2.09 -2.59;
-2.25 -2.13 -6.94;
5.56  2.86 -2.26;
1.03 -3.33  4.33
];%class w1
w2=[-0.91 -0.18 -0.05;
1.30 -2.06 -3.53;
-7.75 -4.54 -0.95;
-5.47  0.50  3.92;
6.14  5.72 -4.85;
3.60  1.26  4.36;
5.37 -4.63 -3.65;
7.18  1.46 -6.66;
-7.39  1.17  6.30;
-7.50 -6.32 -0.31
];
w3=[ 5.35  2.26  8.13;
5.12  3.22 -2.66;
-1.34 -5.31 -9.87;
4.48  3.42  5.19;
7.11  2.39  9.21;
7.19  4.33 -0.98;
5.75  3.97  6.65;
0.77  0.27  2.41;
0.90 -0.43 -8.71;
3.52 -0.36  6.43
];
p1=[1;2;1];%test point1
p2=[5;3;2];
p3=[0;0;0];
p4=[1;0;0];

pw1=0.8;%p(w1)
pw2=0.1;
pw3=0.1;

接下來只要套用【馬式距離】公式,
這裡我以dpiwj代表pi to wj,
pi為test point、wj為class,
部份指令如下:

dp1w1=(p1-mean(w1)’)’*inv(cov(w1))*(p1-mean(w1)’);
%the same as mahal(p1′,w1)
%Mahalanobis Distance: p1 to w1
dp1w2=(p1-mean(w2)’)’*inv(cov(w2))*(p1-mean(w2)’);
dp1w3=(p1-mean(w3)’)’*inv(cov(w3))*(p1-mean(w3)’);

其實Mahalanobis Distance在MATLAB上有函式可用:

mahal(p1′,w1)

結果mahal(p1′,w1)=(p1-mean(w1)’)’*inv(cov(w1))*(p1-mean(w1)’)。

以上為p(w1)=p(w2)=p(w3)時,
即可將pi區分類別wj,
部份結果如下:

#Mahalanobis Distance越小越好
dp1w1 =    1.0302
dp1w2 =    0.7363 *p1 to w2
dp1w3 =    7.1401

p(w1)!=p(w2)!=p(w3)時怎麼辦?
那就要動用到Discriminant Function
部份程式碼如下:

gp1w1=-0.5*((p1-mean(w1)’)’*inv(cov(w1))*(p1-mean(w1)’))+log(pw1);
%Discriminant Function: p1 to w1
gp1w2=-0.5*((p1-mean(w2)’)’*inv(cov(w2))*(p1-mean(w2)’))+log(pw2);
gp1w3=-0.5*((p1-mean(w3)’)’*inv(cov(w3))*(p1-mean(w3)’))+log(pw3);

經過MATLAB的運算後,
部份結果為:

#Discriminant Function越大越好
gp1w1 =   -0.7382 *p1 to w1
gp1w2 =   -2.6707
gp1w3 =   -5.8726

至於Mahalanobis DistanceDiscriminant Function定義可參考上一篇

這麼多數據似乎不好理解,
那麼我們將它們轉換成圖表。

w1與p1p2p3p4的MD關係

至於w2、w3也可以同樣的方式呈現~
最後我們來圖表化class間共30個sample的關係。

w1w2w3的smaple之關係圖。

MATLAB的函式mahal(馬氏距離)scatter3(3D圖表)可參考官方網站。

隨意留個言吧:)~

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

標籤雲