R語言聚類
K划分
1、 隨機生成3個簇點
> c1=cbind(rnorm(20,2,1),rnorm(20,2,1))
> c2=cbind(rnorm(20,3,2),rnorm(20,15,3))
> c3=cbind(rnorm(20,20,2),rnorm(20,20,3))
> v=rbind(c1,c2,c3)
在圖中看看這三個簇的分布
> plot(v) 如圖,
2、 K聚類
clara(x, k),K聚類函數
x是數據集,可以是矩陣或者數據框
k是聚類簇的個數
> clara(v,3),結果如圖
由上圖,可以看出三個聚類的結果。
3、 顯示聚類結果
> cls=clara(v,3)
> clusplot(cls)
4、 k的改變
k-means的一個缺陷就是k需要指定,如果k指定的不好,聚類效果就不好。
如k值分別取2、4、5時的情況。
層次聚類
1、 求相似矩陣
為了表示得更清楚一點,我們取較少的點。
> c11=cbind(rnorm(5,2,1),rnorm(5,2,1))
> c12=cbind(rnorm(5,3,2),rnorm(5,15,3))
> c13=cbind(rnorm(5,20,2),rnorm(5,20,3))
> v=rbind(c11,c12,c13)
sim=dist(v),求相似矩陣,是對角矩陣
2、 層次聚類
> hcls=hclust(sim)
> plot(hcls)
簡單的聚類方法用R語言實現。