聚类是数据分析时常用的数据探索方法,与分类不同,聚类分析是一种无监督学习过程,其分析结果可以提供多个解,选择最终的解需要研究者的主观判断和后续的分析。实现聚类的方法有很多,本文将着重探讨其中一种重要的聚类方法——K均值聚类。
聚类分析指将物理或抽象对象的集合分组为由类似的对象组成的多个类的分析过程,其特点是简单直观,不管实际数据中是否真正存在不同的类别,利用聚类分析都能得到分成若干类别的解。聚类方法也包括层次聚类和非层次聚类,本文介绍的K均值聚类即是非层次聚类的方法之一。K均值聚类适用于连续型变量,算法快速、简单,对大数据集有较高的效率并且是可伸缩性的,并且通常要求已知的类别数。本文以R语言中USArrests数据为例进行演示,展示了较全面的K均值聚类的实际应用。
data('USArrests')
str(USArrests)
clean_data<-na.omit(usarrests)>
clean_data<>
fviz_nbclust(clean_data,kmeans,method='wss')+geom_vline(xintercept=4,linetype=2)#寻找最佳聚类数
ps:method:Possible values are 'silhouette' (for average silhouette width), 'wss' (for total within sum of square) and 'gap_stat' (for gap statistics).
从图中可以看到聚类结果在四类前后变化很大了,因此可以选择聚成四类
km.res<>
4类的聚类中心如下
用不同的颜色展示四个聚类结果
fviz_cluster(km.res,data=clean_data)
fviz_cluster(km.res,data=clean_data,frame.type='t')
联系客服