聚类算法(2):系统聚类/层次聚类算法
- 層次聚類:自下而上法(bottom-up)和自上而下法(top-down)
? ? ? ?聚類算法(4)--Hierarchical clustering層次聚類
- 系統(tǒng)聚類:相當于自下而上法,也就是層次聚類
目錄
一、系統(tǒng)聚類? ? ??
1. 系統(tǒng)聚類實現(xiàn)的一般步驟
2. 常用的距離
3. 類間距離
二、手動實現(xiàn)過程
三、代碼實現(xiàn)
1. R語言
2. Python代碼
?一、系統(tǒng)聚類? ? ??
? ? ? ? ?系統(tǒng)聚類法是目前國內(nèi)外使用比較多的一種聚類方法,其實現(xiàn)方式是:它首先將每個樣本單獨看成一類,在規(guī)定類間距離的條件下,選擇距離最小的一對合并成一個新類,并計算新類與其他類之間的距離,再將距離最近的兩類合并,這樣每次會減少一個類,直到所有的樣本合為一類為止。
1. 系統(tǒng)聚類實現(xiàn)的一般步驟
(1)將每個樣品看成一類
(2)計算類間距離矩陣,并將距離最近的兩類合并成為一個新類
(3)計算新類與當前各類之間的距離。若類的個數(shù)等于1,則進行下一步,否則轉到第2步
(4)畫聚類圖
(5)決定聚類數(shù)目和類別
2. 常用的距離
? ? ? ? 包括:絕對值距離、歐氏距離、明氏距離、切比雪夫距離、馬氏距離、蘭氏距離、余弦距離。
? ? ? ? ??
? ? ? ? ? ??
3. 類間距離
? ? ? ?類間距離也有很多定義方法,主要有:類平均法、可變類平均法、可變法、重心法、中間距離法、最長距離法、最短距離法、離差平方法。
? ? ? ? ? ? ?? ? ??
? ? ? ? ? ? ? ??
二、手動實現(xiàn)過程
? ? ? ?選擇適當?shù)臉颖揪嚯x和類間距離計算方法,便可從每樣本作為單獨類開始逐漸合并,最終合為一類。這里,使用表3-5-4的數(shù)據(jù),以歐氏距離作為衡量樣本間距離的標準,以最短距離法作為衡量類間距離的標準,來說明系統(tǒng)聚類的手動計算過程。
? ? ? ? ? ? ? ? ? ? ? ? ? ???
? ??
??
三、代碼實現(xiàn)
1. R語言
? ? ? 在R語言中,通常使用hlst函數(shù)來做系統(tǒng)聚類,它的定義及參數(shù)說明如表3-5-6所示。
? ? ? ? ? ??
? ?使用K-Means算法對AirPassagers的年度標準曲線進行聚類,旨在發(fā)現(xiàn)乘客數(shù)據(jù)的年度變化模式,代碼如下:??
#重構數(shù)據(jù) ap.data<-t(mapply(function(i){AirPassengers[(12*(i-1)+1):(i*12)]},1:12))#標準化曲線 ap.data.std<-t(apply(ap.data,1,function(x){(x-min(x))/(max(x)-min(x))}))#使用hclust函數(shù)進行聚類 hc<-hclust(dist(ap.data.std),method="ward.D2") plot(hc) rect.hclust(hc,k=2) # 加上劃分矩形框#設置類標簽 ap.data.std<-cbind(ap.data.std,cutree(hc,k=2))#畫出曲線圖 plot(1:12,1:12,col='white',ylim=c(0,1)) for(i in 1:nrow(ap.data.std)) {lines(1:12,ap.data.std[i,1:12],col=ap.data.std[i,13]+2) }效果圖如下:?
? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ?? ? ? ? ?
2. Python代碼
總結
以上是生活随笔為你收集整理的聚类算法(2):系统聚类/层次聚类算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 聚类算法(1):K-Means算法
- 下一篇: java信息管理系统总结_java实现科