1. 程式人生 > >Kmeans聚類法-K均值

Kmeans聚類法-K均值

目錄

什麼是Kmeans聚類法-K均值

與系統聚類區別

K均值原理與計算

R實現

 1000個數據

10000個數據

關於聚類分析的總結

聚類分析的一些特點


什麼是Kmeans聚類法-K均值

系統聚類法需要計算不同樣品或變數的距離,當樣本量很大時,會佔據非常大的計算機記憶體空間

Kmeans是一種快速聚類法,該方法簡單易懂,對計算機要求不高,

Kmeans是麥奎因提出的,基本思想是將每一個樣品分配給最近中心(均值)的類中:

(1)將所有的樣品分成k個初始類

(2)通過歐式距離將某個樣品劃入離中心最近的類中,並對獲得樣品與失去樣品的類重新計算中心座標。

(3)重複步驟(2),直到所有的樣品都不能再分配為止。

與系統聚類區別

系統聚類對不同的類數產生一系列的聚類結果,而K均值法只能產生指定類數的聚類結果。

K均值原理與計算

Kmeans演算法以k為引數,把n個物件分為k個聚類,以使聚類內具有較高的相似度,而聚類間的相似度較低,相似度的計算是根據一個聚類中物件的均值來進行的。通常採用平方誤差準則,其定義如下:

其中E是資料中所有物件與相應聚類中心的均方差之和,p為代表物件空間中的一個點,mi是Ci的均值。

R實現

 1000個數據

x1=matrix(rnorm(1000,mean=0,sd=0.3),ncol=10)#均值1,標準差為0.3的100x10的正態隨機數矩陣
x2=matrix(rnorm(1000,mean=1,sd=0.3),ncol=10) 

x=rbind(x1,x2)
H.clust(x,"euclidean","complete")

> cl=kmeans(x,2)#kmeans聚類
> pch1=rep("1",100)
> pch2=rep("2",100)
> plot(x,col=cl$cluster,pch=c(pch1,pch2),cex=0.7)
> points(cl$centers,col=3,pch="*",cex=3)

10000個數據

x1=matrix(rnorm(10000,mean=0,sd=0.3),ncol=10)#均值1,標準差為0.3的1000x10的正態隨機數矩陣
x2=matrix(rnorm(10000,mean=1,sd=0.3),ncol=10) 
x=rbind(x1,x2)
cl=kmeans(x,2)#kmeans聚類
pch1=rep("1",1000)
pch2=rep("2",1000)
plot(x,col=cl$cluster,pch=c(pch1,pch2),cex=0.7)
points(cl$centers,col=3,pch ="*",cex=3)

關於聚類分析的總結

聚類分析的一些特點

(1)綜合性,聚類分析可以利用多個變數資訊對樣品進行分類,克服單一指標分類弊端。

(2)形象性,聚類分析可以利用聚類圖直觀地表現其分類形態及類與類之間的內在關係

(3)客觀性,聚類分析的結果克服了主觀因素,比傳統分類方法更客觀,細緻,全面和合理。