层次聚类分析及代码实现

2023年2月5日07:57:28

层次聚类

层次聚类将个体间的关系进行分层次展示,可以人为设定分为几类。

作图代码及结果

###生成层次聚类,dist距离矩阵默认计算方式为欧氏距离method = "euclidean",聚类方法默认为complete
hc = hclust(dist(mtcars))
plot(hc)

作图结果如下:
层次聚类分析及代码实现
根据上述图,我们可以初步确定聚为几类更为合适:

#要是没有这个包的话,首先需要安装一下
#install.packages("factoextra")
#载入包
library(factoextra)
fviz_dend(hc, k = 4, 
          cex = 0.7, 
          k_colors = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
          color_labels_by_k = TRUE, 
          rect = TRUE          
)

结果如下:
层次聚类分析及代码实现
如果想放平,可以这样画:

fviz_dend(hc, k = 4, 
          cex = 0.7, 
          k_colors = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
          color_labels_by_k = TRUE, 
          rect = TRUE,
          horiz = T)

这样就放平了:

层次聚类分析及代码实现
当然还有更多美化方式,具体可以参考最全的R语言聚类树形图画法

距离矩阵和聚类算法小结

如果对计算距离矩阵和聚类的算法有特定要求,可以参考下面的参数介绍。

在聚类中求两点的距离有:

1,绝对距离:manhattan

2,欧氏距离:euclidean 默认

3,闵科夫斯基距离:minkowski

4,切比雪夫距离:chebyshev

5,马氏距离:mahalanobis

6,蓝氏距离:canberra

用默认的算法求出距离如下

算出距离后就可以进行聚类啦!

out.hclust=hclust(out.dist,method=“complete”) #根据距离聚类

聚类也有多种方法:

1,类平均法:average

2,重心法:centroid

3,中间距离法:median

4,最长距离法:complete 默认

5,最短距离法:single

6,离差平方和法:ward

7,密度估计法:density

参考链接

基于R语言的聚类分析(k-means,层次聚类)
最全的R语言聚类树形图画法
R语言用hclust进行聚类分析
R语言可视化(二十九):聚类树图绘制
R语言之系统聚类(层次)分析之图谱形式完整版
99-非监督学习之hclust分层聚类
R语言绘图——给树状图的标签赋予不同颜色
R语言聚类分析

  • 作者:小八四爱吃甜食
  • 原文链接:https://blog.csdn.net/weixin_46605479/article/details/127446849
    更新时间:2023年2月5日07:57:28 ,共 1050 字。