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语言实现。