【R語言實驗】Fisher判別
阿新 • • 發佈:2021-01-28
技術標籤: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%