1. 程式人生 > >距離判別法及R實現

距離判別法及R實現

簡介

根據已知分類資料,分別計算各類重心,即是各組的均值,距離判別準則是,對任給的一次觀測,若他與第i類的重心最近,就認為他來自第i類

兩總體距離判別

設有兩個總體 G1和G2,從第一個總體中抽取n1個樣品,從第二個總體中抽取n2個樣品,對每個樣品測量p個指標,取任一個樣品實測指標為X=(x1,x3,xp)‘,分別計算樣品X到總體G1和G2的距離D(X,G1)和D(X,G2),按距離最近準測判別分類,即是

具體而言,設μ1,μ2、∑1、∑2、分別為總體G1和G2的均值向量協方差陣,通常採用馬氏距離進行判別,即:

(1)當∑1=∑2=∑時,設

為線性判別函式

其中

於是可根據W(X)的正負性判定所取樣本的類別:

(2)當∑1!=∑2時,仍然用

為判別函式,不過它是X的二次函式,而不是上面那中情況下的線性函式

R實現

> d = read.table("clipboard",header=T)
> attach(d)
> d
    N   Q   C  P X1G X2G
1   1 8.3 4.0 29   1   1
2   2 9.5 7.0 68   1   1
3   3 8.0 5.0 39   1   1
4   4 7.4 7.0 50   1   1
5   5 8.8 6.5 55   1   1
6   6 9.0 7.5 58   1   2
7   7 7.0 6.0 75   1   2
8   8 9.2 8.0 82   1   2
9   9 8.0 7.0 67   1   2
10 10 7.6 9.0 90   1   2
11 11 7.2 8.5 86   1   2
12 12 6.4 7.0 53   1   2
13 13 7.3 5.0 48   2   2
14 14 6.0 2.0 20   2   3
15 15 6.4 4.0 39   2   3
16 16 6.8 5.0 48   2   3
17 17 5.2 3.0 29   2   3
18 18 5.8 3.5 32   2   3
19 19 5.5 4.0 34   2   3
20 20 6.0 4.5 36   2   3
> plot(Q,C);text(Q,C,X1G,adj = -0.8)
> plot(Q,P);text(Q,P,X1G,adj = -0.8)
> plot(C,P);text(C,P,X1G,adj = -0.8)

***學了兩天R語言,包找不到,各種報錯,棄坑,改python機器學習

***水文一篇,勿噴