1. 程式人生 > 其它 >【R語言實驗】Fisher判別

【R語言實驗】Fisher判別

技術標籤:r語言

**實驗目的:瞭解Fisher判別的原理,明白R語言實現Fisher判別的函式
瞭解Bayes判別的原理,明白R語言實現Bayes判別的函式
實驗要求: 5.4
實驗素材:在我的資源中ex.5.4
在這裡插入圖片描述

實驗程式碼:**

1、讀取資料並檢視資料
> d5.4<-read.table("clipboard",header=T)
> d5.4
   X.編號 類別  x1  x2  x3  x4 x5   x6  x7
1       1    1 6.6  39 1.0 6.0  6 0.12  20
2       2    1 6.6  39
1.0 6.0 12 0.12 20 3 3 1 6.1 47 1.0 6.0 6 0.08 12 4 4 1 6.1 47 1.0 6.0 12 0.08 12 5 5 1 8.4 32 2.0 7.5 19 0.35 75 。。。。 26 26 2 8.4 113 3.5 4.5 6 0.15 75 27 27 2 8.4 113 3.5 4.5 8 0.15 75 28 28 2 7.5 52 1.0 6.0 6 0.16 40 29 29 2 7.5 52 1.0 7.5 8 0.16
40 30 30 2 8.3 97 0.0 6.0 5 0.15 180 31 31 2 8.3 97 2.5 6.0 5 0.15 180 32 32 2 8.3 89 0.0 6.0 10 0.16 180 33 33 2 8.3 56 1.5 6.0 13 0.25 180 34 34 2 7.8 172 1.0 3.5 6 0.21 45 35 35 2 7.8 283 1.0 4.5 6 0.18 45 > attach(d5.4) > library(MASS) > ld=lda(類別~x1+x2+x3+
x4+x5+x6+x7) > ld Call: lda(類別 ~ x1 + x2 + x3 + x4 + x5 + x6 + x7) Prior probabilities of groups: 1 2 0.3428571 0.6571429 Group means: x1 x2 x3 x4 x5 x6 x7 1 7.358333 73.66667 1.458333 6.00000 15.250000 0.1716667 49.50000 2 7.686957 69.60870 2.043478 5.23913 6.347826 0.2156522 70.34783 Coefficients of linear discriminants: LD1 x1 -0.245649826 x2 0.001254551 x3 0.213249345 x4 -0.189501453 x5 -0.194515201 x6 8.912500028 x7 0.019583827 > Z=predict(ld) > newG=Z$class > cbind(類別,newG,Z$post) 類別 newG 1 2 1 1 1 0.6998386390 3.001614e-01 2 1 1 0.9822812090 1.771879e-02 3 1 1 0.8675068027 1.324932e-01 9 1 2 0.2134025513 7.865974e-01 29 2 1 0.7683764250 2.316236e-01 33 2 2 0.0017907272 9.982093e-01 34 2 2 0.0266095311 9.733905e-01 35 2 2 0.0608161998 9.391838e-01

這裡“類別”為原始類別,newG為回判類別,後兩列給出了每個樣品判入每個類的後驗概率。顯然,回判時Fisher判別法把每個樣品判入後驗概率最大的那一類。這恰好說明了9號,29號兩個樣品產生錯判的原因,

	> tab=table(newG,類別)
> tab
    類別
newG  1   2
    1  11  1
    2  1  22

由結果可以看出,對35個原始資料的預測中,只有2個判別錯誤,誤判率為5%