R语言获取优化的k均值聚类
来源:互联网 发布:淘宝开店的类目是什么? 编辑:程序博客网 时间:2024/06/18 17:15
说明
k均值算法效率快也易于实现,但在算法开始要求提前规定好簇K的数目,因此我们可以使用距离的平方和确定那个K值能够得到最好的k均值聚类效果。
操作
执行以下操作为K均值算法找到最合适的聚类个数
nk = 2:10set.seed(22)WSS = sapply(nk, function(nk){ kmeans(customer,centers = nk)$tot.withinss})WSS[1] 123.49224 88.07028 61.34890 48.76431 47.20813 45.48114 29.58014 28.87519 23.21331
调用plot绘制不同的k值下距离平方和的线图:
plot(nk,WSS,type = "l",xlab = "number of k",ylab = "within sum of squares")
不同k值下距离平方和线图
计算不同聚类结果的平均轮廓值(avg.silwidth)
SW =sapply(nk, function(k){ cluster.stats(dist(customer),kmeans(customer,centers = k)$cluster)$avg.silwidth})SW[1] 0.4203896 0.4092890 0.4640587 0.4308448 0.4160309 0.4241364 0.3637102 0.3540200 0.3436709
不同k值的平均轮廓线
plot(nk,SW,type = "l",xlab = "number of clusers",ylab = "average silhouette width")
得到最大的簇个数:
nk[which.max(SW)][1] 4
原理
通过迭代生成簇的距离平方和以及平均轮廓值来寻找最优的簇数值,其中,距离平方和越小,聚簇的效果越佳,通过不同的K值下距离平方和图,可以得到最适合样例的k值为4。我们还使用cluster.stats函数来计算不同的聚类结果的平均轮廓值图,并绘制了相应的线图,从结果可以知道当k=4时,平均轮廓值最大。还可以用which.max函数得到最大平均轮廓值对应的k值。
阅读全文
0 0
- R语言获取优化的k均值聚类
- R语言聚类算法之k均值聚类(K-means)
- 基于R语言的支持向量机(SVM)+k均值(K-means)简单实现
- K-均值聚类
- K均值聚类
- k均值聚类
- k均值聚类
- K均值聚类
- K均值聚类
- k均值聚类
- K-均值聚类
- K-均值聚类
- K均值聚类
- K均值聚类
- k均值聚类
- k-均值聚类
- k均值聚类
- R语言使用K均值方法处理数据
- Maven_Netty5 实例
- 【考研经验随笔2】
- javascript 中的location地址信息
- Linux chmod高级篇
- hdoj1081 To The Max(类比于一维最大字段和)
- R语言获取优化的k均值聚类
- cmd运行Java文件时,显示的中文乱码问题
- android 快速开发框架,基于组件化的MVP结构
- 奇怪的一次赋值
- Android判断是否有网
- 将Json日期格式化
- Latex写文章可能遇到的问题及解决方案
- JAVA重载(overload)和覆盖(override)中你所不知道的陷阱
- splay专题