R语言做K均值聚类的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
<节> <节>K均值聚类是一种比较常用的聚类方法,R语言里做K均值聚类比较常用的函数是<代码> kmeans()> 代码,需要输入3个参数,第一个是聚类用到的数据,第二个是你想将数据聚成几类<代码> K> 代码,第三个参数是<代码> nstart https://www.datanovia.com/en/lessons/k-means-clustering-in-r-algorith-and-practical-examples/代码>
这篇链接里提到
默认的nstart是1,推荐使用较大的值,以获得一个稳定的结果。比如可以使用25或50者。
那如果想使用K均值聚类的话,就可以分成两种情况,
- <李> <节>第一种是知道我自己想聚成几类,比如鸢尾花的数据集,明确想聚为3类。这时候直接指定K下面用鸢尾花数据集做K均值聚类节> 李>
<代码> df<虹膜[1:4],
iris.kmeans<-kmeans (df,中心=3,nstart =, 25)
名称(iris.kmeans)
代码>
<代码> iris.kmeans> 代码结果里存储9个结果,可能会用到的是<代码> iris.kmeans集群代码>美元存储的是每个样本被归为哪一类<代码> iris.kmeans美元大? 代码存储的是每一个大类有多少个样本
使用散点图展示结果,借助<代码> factoextra> 代码包中的<代码> fviz_cluster() 代码>函数
<代码>图书馆(factoextra),
fviz_cluster(对象=iris.kmeans, data=https://www.yisu.com/zixun/iris [1:4],
,,,,,,,,,,,,, ellipse.type =,“euclid", star.plot=T,击退=T
,,,,,,,,,,,,, geom =, (“point"),面板=& # 39;jco& # 39;,主要=?”,
,,,,,,,,,,,,, ggtheme=theme_minimal ()) +
,,主题(=axis.title element_blank ())
代码>
作图代码参考https://degreesofbelief.roryquinn.com/clustering-analysis-in-r-part-2
- <李> <节>第二种情况是我不知道想要聚成几类,这个时候就可以将K值设置为一定的范围,然后根据聚类结果里的一些参数来筛选最优的结果比如这篇文章https://www.guru99.com/r-k-means-clustering.html他提到可以使用
,,集群tot.withinss美元,<代码> 代码>这个参数,选择出现平滑变化的那个点,他起的名字是
,,,<强>肘法>强,英文解释是节> 李>
这个方法使用类内同质性或类内非均质性评价的变化。换句话说,你感兴趣的方差解释为每个集群的百分比。你可以预期的变化与集群的数量增加,另外,异质性下降。我们面临的挑战是找到k这超出了收益递减。添加一个新的集群不会改善数据的可变性,因为只有很少的信息是留下来解释。
引用>这个英文解释我也没有看明白。实际操作的代码是
下面用<代码> USArrests 代码>这个数据集是美国50个州1973年每10万人中因某种罪被捕的人数,共4个变量
<代码> df<-USArrests图数据工具,<=" mdnice编辑器”> ,,,,,,,,,,,,, geom =, c (“point",“text"),面板=& # 39;jco& # 39;,主要=?”,
kmean_withinss & lt;作用;函数(k), {
,, cluster & lt;作用;kmeans (df, k, nstart =, 25)
,, return (集群tot.withinss美元)
}
wss<-sapply(20分,kmean_withinss)
wss
elbow<-data.frame (a=20分,B=wss)图书馆(ggplot2)
ggplot(肘、aes (x=a, y=B)) +
,, geom_point () +
,, geom_line () +
,, scale_x_continuous (breaks =, seq(1, 20日,by =, 1)) + theme_bw ()
代码>
,,,,,,,,,,,,, ggtheme=theme_minimal ()) +
,,主题(=axis.title element_blank ())
代码> 图数据工具,<=" mdnice编辑器”> R语言做K均值聚类的示例分析