R語言Kmeans聚類例項
阿新 • • 發佈:2018-12-02
隨機數生成40對點,每一個點2維,聚成4類,並且畫出聚類圖形!
Kmeans演算法原理
K均值法先指定聚類數,目標是使每個資料到資料點所屬聚類中心的總距離的平方和最小,規定聚類中心點時則是以該類資料點的平均值作為聚類中心。
步驟
- 隨機選取K個數據點作為(起始的)聚類中心點;
- 按照距離最近原則分配資料點到對應類;
- 計算每類的資料點平均值,找到新的聚類中心;
- 計算資料點到聚類中心的總距離;
- 如果與上一次相比總距離下降,聚類中心替換;
- 直到總距離不再下降或者達到指定計算次數。
解決過程
- 隨機生成兩個長度為40的向量,並將其轉化為矩陣,則為2*40的矩陣
- 執行Kmeans分類
- 檢視分類之後的資訊
- 作圖
實現程式碼
n<-runif(40,10,100)
n2<-runif(40,100,200)
c3<-cbind(n,n2)
c3
plot(n,n2)
#在一個矩陣上執行K均值聚類
kc<-kmeans(c3,4)
#檢視資訊
summary(kc)
#檢視聚類的結果,也就是每個點聚到了那個類
kc$cluster
#檢視中心點(聚類點)
kc$centers
#匯入快速畫圖包
library(ggplot2)
#畫圖
qplot(n,n2,colour=kc$cluster)
結果展示
> summary(kc) Length Class Mode cluster 40 -none- numeric centers 8 -none- numeric totss 1 -none- numeric withinss 4 -none- numeric tot.withinss 1 -none- numeric betweenss 1 -none- numeric size 4 -none- numeric iter 1 -none- numeric ifault 1 -none- numeric > kc$cluster [1] 3 1 1 2 3 3 1 4 3 3 2 1 3 1 1 1 2 4 3 1 1 3 3 4 3 3 4 1 1 1 1 4 4 1 4 2 3 1 4 4 > kc$centers n n2 1 38.61641 143.5943 2 73.16323 110.5277 3 75.97488 147.8338 4 72.60813 187.7726
plot(n,n2)
聚類之後的圖