1 数据说明
我们这里将采用“地区经济社会发展.sav”数据文件,根据我国31个省市经济、社会、环境状况来对其进行分类。
2 加载数据并采用kmeans方法聚类
> library(haven)
> areaData=read_sav("D:/Desktop/地区经济社会发展.sav")
> areaDataScale=scale(areaData[,-1])
> fit_kmeans=kmeans(areaDataScale,3)
> fit_kmeans$cluster
[1] 1 3 2 2 3 2 3 3 1 1 1 2 2 2 2 2 2 2 1 2 3 2 2 2 2 3 2 3 3 3 3
> plot(areaDataScale, col = fit_kmeans$cluster,xlab="",ylab="")
说明:这里设置的聚类数目为3类。
3 判断最优的聚类数
> k=2:10
> bsstss<-sapply(k,function(n){ kmeans(areaDataScale,centers = n)$betweenss/kmeans(areaDataScale,centers = n)$totss })
> plot(k,bsstss,type = "l",xlab="聚类数",ylab="betweenss/totss")
说明:当聚类数为6时,组间变异与总变异之比的提升幅度显著降低,因而聚成5类比较合适。当然,这仅仅是根据数据的特征得出的结论,最主要还是通过定性分析来得出聚类的数目,只有当定性分析无法给出合适的聚类数时在用组间变异与总变异之比的方法判断聚类数。