操作表面系数判定K均值聚类的簇个数
K均值聚类(K-means clustering)计较简朴,而且可以用于各类数据范例,但需要事先判定簇个数来作为输入参量,该参数的配置往往涉及到聚类结果。
表面系数可以用来办理这个问题,表面系数(silhouette coefficient)要领团结了凝结度和疏散度,可以以此来判定聚类的优良性,其值在-1到+1之间取值,值越大暗示聚类结果越好。
依据这个道理,我们可以实验用多个簇参量,重复计较在每个簇个数条件下的表面系数,当表面系数取较大时,其相应的簇个数是较好的。
在R语言中package fpc可以计较聚类后的一些评价指标,个中就包罗了表面系数。
#首先加载软件包
library(fpc)
#操作著名的iris数据集
data=iris[,1:4]
#设簇个数在2到5之间取值
for (i in 2:5){
#K聚类功效存于result变量
result <- kmeans(data,i)
#求出聚类评价统计量
stats=cluster.stats(dist(data), result$cluster)
#将功效存入X
x[i]=stats$avg.silwidth
}