R语言k-means聚类

轮廓系数

参考https://en.wikipedia.org/wiki/Silhouette_(clustering)

K值选取

在实际应用中,由于Kmean一般作为数据预处理,或者用于辅助分类贴标签。所以k一般不会设置很大。可以通过枚举,令k从2到一个固定值如10,在每个k值上重复运行数次kmeans(避免局部最优解),并计算当前k的平均轮廓系数,最后选取轮廓系数最大的值对应的k作为最终的集群数目。

数据标准化

min.max.norm <- function(x){
  (x-min(x))/(max(x)-min(x))
}
raw.data <- iris[,1:4]
norm.data <- data.frame(sl = min.max.norm(raw.data[,1]),
                        sw = min.max.norm(raw.data[,2]),
                        pl = min.max.norm(raw.data[,3]),
                        pw = min.max.norm(raw.data[,4]))

画轮廓图确定k

# k取2到8,评估K
K <- 2:8
round <- 30 # 每次迭代30次,避免局部最优
rst <- sapply(K, function(i){
  print(paste("K=",i))
  mean(sapply(1:round,function(r){
    print(paste("Round",r))
    result <- kmeans(norm.data, i)
    stats <- cluster.stats(dist(norm.data), result$cluster)
    stats$avg.silwidth
  }))
})
plot(K,rst,type='l',main='轮廓系数与K的关系', ylab='轮廓系数')

通过多维定标进行可视化

old.par <- par(mfrow = c(1,2))
k = 2 # 根据上面的评估 k=2最优
clu <- kmeans(norm.data,k)
mds = cmdscale(dist(norm.data,method="euclidean"))
plot(mds, col=clu$cluster, main='kmeans聚类 k=2', pch = 19)
plot(mds, col=iris$Species, main='原始聚类', pch = 19)
par(old.par)

附录

模式识别之多维定标

在模式识别中,我们会考虑到距离distance的问题,就是一个样本和另一个样本在空间中的距离。根据距离的大小来判断分类。那么,也存在这样的一类问题:我们只知道空间中的点(样本)的距离,那么怎么来重构这些点的相对位置呢?
显然欧式距离是最直观的距离,那么我们就会想使用欧式距离来进行计算重构,我们还希望能够在不同维度上进行重构,比如2维或者3维。
怎么做?
有这么个解决方法叫做MDS 全称为 Multidimensional Scaling。

有一个距离矩阵D,我们试图通过这个距离矩阵计算出点的相对位置矩阵X,使得通过X反过来计算距离矩阵D差距最小。所以这是个最优化问题。
参考http://blog.csdn.net/songrotek/article/details/42235097
wiki:https://en.wikipedia.org/wiki/Multidimensional_scaling

谱聚类

参考http://blog.pluskid.org/?p=287

参考:http://www.cnblogs.com/bourneli/p/3645049.html
wiki对轮廓系数的解释https://en.wikipedia.org/wiki/Silhouette_(clustering)

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值