R语言中不同类型的聚类方法比较
创始人
2024-03-11 22:45:25
0

聚类方法用于识别从营销,生物医学和地理空间等领域收集的多变量数据集中的相似对象。我们围绕聚类技术进行一些咨询,帮助客户解决独特的业务问题。它们是不同类型的聚类方法,包括:

  • 划分方法
  • 分层聚类
  • 模糊聚类
  • 基于密度的聚类
  • 基于模型的聚类

 

  【视频】KMEANS均值聚类和层次聚类:R语言分析生活幸福质量系数可视化实例

KMEANS均值聚类和层次聚类:R语言分析生活幸福质量系数可视化实例

,时长06:05

数据准备

  • 演示数据集:名为USArrest的内置R数据集
  • 删除丢失的数据
  • 缩放变量以使它们具有可比性

# 读取和准备数据my_data <- USArrests %>%na.omit() %>%          # 删除缺失值scale()                # 标准化变量# 查看前面3行
head(my_data, n = 3)
##         Murder Assault UrbanPop     Rape
## Alabama 1.2426   0.783   -0.521 -0.00342
## Alaska  0.5079   1.107   -1.212  2.48420
## Arizona 0.0716   1.479    0.999  1.04288

距离

  • get_dist():用于计算数据矩阵的行之间的距离矩阵。与标准dist()功能相比,它支持基于相关的距离测量,包括“皮尔逊”,“肯德尔”和“斯皮尔曼”方法。
  • fviz_dist():用于可视化距离矩阵
res.dist <- get_dist(Ugradient = list(low = "#00AFBB", mid = "white", high = "#FC4E07"))

划分聚类

、算法是将数据集细分为一组k个组的聚类技术,其中k是分析人员预先指定的组的数量。

k-means聚类的替代方案是K-medoids聚类或PAM(Partitioning Around Medoids,Kaufman和Rousseeuw,1990),与k-means相比,它对异常值不太敏感。

以下R代码显示如何确定最佳簇数以及如何在R中计算k-means和PAM聚类。

  1. 确定最佳簇数 
 
fviz_nbclust(my_data, kmeans, method = "gap_stat")

计算并可视化k均值聚类

set.seed(123)# 可视化
 
viz(km.res, data = my_data,ellipse.type 

# 计算 PAM
 
pam.res <- pam(my_data, 3)
# 可视化
viz(pam.res)

分层聚类

分层聚类是一种分区聚类的替代方法,用于识别数据集中的组。它不需要预先指定要生成的簇的数量。

# 计算层次聚类# 标准化数据hclust(method = "ward.D2")     # 计算层次聚类# 可视化
# 分成4组,按组上色
viz(res.hc, k = 4, #分为四组color_labels_by_k = TRUE, # 颜色标签rect = TRUE # 在组周围添加矩形)

评估聚类倾向

为了评估聚类倾向,可以使用Hopkins的统计量和视觉方法。 

  • Hopkins统计:如果Hopkins统计量的值接近1(远高于0.5),那么我们可以得出结论,数据集是显着可聚类的。
  • 视觉方法:视觉方法通过计算有序相异度图像中沿对角线的方形黑暗(或彩色)块的数量来检测聚类趋势。

R代码:

 
iris[, -5] %>%    # 删除第5列(种类)scale() %>%     # 标准化变量get_clust_tendency(n = 50, gradient = gradient.color)
## $hopkins_stat
## [1] 0.8
## 
## $plot

确定最佳簇数

 set.seed(123)# 计算
 
res.nbclust <- USArrests %>%scale() %>%(distance = "euclidean"
# 可视化
 
viz(res.nbclust 
## Among all indices: 
## ===================
## * 2 proposed  0 as the best number of clusters
## * 1 proposed  1 as the best number of clusters
## * 9 proposed  2 as the best number of clusters
## * 4 proposed  3 as the best number of clusters
## * 6 proposed  4 as the best number of clusters
## * 2 proposed  5 as the best number of clusters
## * 1 proposed  8 as the best number of clusters
## * 1 proposed  10 as the best number of clusters
## 
## Conclusion
## =========================
## * According to the majority rule, the best number of clusters is  2 .

群集验证统计信息

在下面的R代码中,我们将计算和评估层次聚类方法的结果。

  1. 计算和可视化层次聚类:
 # 增强的层次集群,分为3组("hclust", k = 3, graph = FALSE)# 可视化(res.hc, 
检查轮廓图:
 (res.hc)
##   cluster size ave.sil.width
## 1       1   49          0.63
## 2       2   30          0.44
## 3       3   71          0.32

  1. 哪些样品有负面轮廓?他们更接近什么集群?
# 观测值的轮廓宽度
res.hc$silinfo$widths[, 1:3]# 带有负轮廓的对象
sil[neg_sil_index, , drop = FALSE]
##     cluster neighbor sil_width
## 84        3        2   -0.0127
## 122       3        2   -0.0179
## 62        3        2   -0.0476
## 135       3        2   -0.0530
## 73        3        2   -0.1009
## 74        3        2   -0.1476
## 114       3        2   -0.1611
## 72        3        2   -0.2304

高级聚类方法

混合聚类方法

  • 分层K均值聚类:一种改进k均值结果的混合方法
  • HCPC:主成分上的分层聚类

模糊聚类

模糊聚类也称为软聚类方法。标准聚类方法(K-means,PAM),其中每个观察仅属于一个聚类。这称为硬聚类。

基于模型的聚类

基于模型的聚类中,数据被视为来自两个或多个聚类的混合的分布。它找到了最适合模型的数据并估计了簇的数量。

DBSCAN:基于密度的聚类

DBSCAN是Ester等人引入的聚类方法。(1996)。它可以从包含噪声和异常值的数据中找出不同形状和大小的簇(Ester等,1996)。基于密度的聚类方法背后的基本思想源于人类直观的聚类方法。

R链中的DBSCAN的描述和实现

非常感谢您阅读本文,有任何问题请在下方留言!


相关内容

热门资讯

美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...