您的位置:首页 > 其它

R语言 层次聚类(系统聚类)

2018-03-20 21:25 253 查看
层次聚类试图在不同层次对数据集进行划分

library(NbClust)

data(nutrient, package = 'flexclust')
row.names(nutrient) <- tolower(row.names(nutrient))
nutrient.scale <- scale(nutrient)
d <- dist(nutrient.scale)
fit.average <- hclust(d,method = "average")
# 休伯特指数是确定聚类数量的图形方法。 在休伯特指数图中,我们寻求一个显着的膝盖,
# 这个指标相当于该指标值的显着增加,即休伯特指数第二差异图中的重要峰值。
# 确定层次聚类的个数,如果是有几个合适的聚类个数,需确定是需要分类的个数少还是分类个数多
nc <- NbClust(nutrient.scale, distance = "euclidean", min.nc = 2,
max.nc = 15, method = "average") # 包NbClust
table(nc$Best.nc[1,])
barplot(table(nc$Best.nc[1,]))

# plot
plot(fit.average, hang = -1,cex = .8)
rect.hclust(fit.average, k = 5) # 在图上画出聚类个数

# 在确定好层次个数之后计算每个层次的个数
clusters <- cutree(fit.average, k = 5)
table(clusters) # 各层次的个数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: