原文链接:

http://tecdat.cn/?p=7275​tecdat.cn

确定数据集中最佳的簇数是分区聚类(例如k均值聚类)中的一个基本问题,它要求用户指定要生成的簇数k。

一个简单且流行的解决方案包括检查使用分层聚类生成的树状图,以查看其是否暗示特定数量的聚类。不幸的是,这种方法也是主观的。

我们将介绍用于确定k均值,k medoids(PAM)和层次聚类的最佳聚类数的不同方法。

这些方法包括直接方法和统计测试方法:

  1. 直接方法:包括优化准则,例如簇内平方和或平均轮廓之和。相应的方法分别称为弯头方法和轮廓方法。
  2. 统计检验方法:包括将证据与无效假设进行比较。

除了肘部轮廓间隙统计方法外,还有三十多种其他指标和方法已经发布,用于识别最佳簇数。我们将提供用于计算所有这30个索引的R代码,以便使用“多数规则”确定最佳聚类数。

对于以下每种方法:

  • 我们将描述基本思想和算法
  • 我们将提供易于使用的R代码,并提供许多示例,用于确定最佳簇数并可视化输出。

肘法

回想一下,诸如k-均值聚类之类的分区方法背后的基本思想是定义聚类,以使总集群内变化[或总集群内平方和(WSS)]最小化。总的WSS衡量了群集的紧凑性,我们希望它尽可能小。

Elbow方法将总WSS视为群集数量的函数:应该选择多个群集,以便添加另一个群集不会改善总WSS。

最佳群集数可以定义如下:

  1. 针对k的不同值计算聚类算法(例如,k均值聚类)。例如,通过将k从1个群集更改为10个群集。
  2. 对于每个k,计算群集内的总平方和(wss)。
  3. 根据聚类数k绘制wss曲线。
  4. 曲线中拐点(膝盖)的位置通常被视为适当簇数的指标。

平均轮廓法

平均轮廓法计算不同k值的观测值的平均轮廓。聚类的最佳数目k是在k的可能值范围内最大化平均轮廓的数目(Kaufman和Rousseeuw 1990)。

差距统计法

该方法可以应用于任何聚类方法。

间隙统计量将k的不同值在集群内部变化中的总和与数据空引用分布下的期望值进行比较。最佳聚类的估计将是使差距统计最大化的值(即,产生最大差距统计的值)。

资料准备

我们将使用USArrests数据作为演示数据集。我们首先将数据标准化以使变量具有可比性。

head(df) ## 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 ## Arkansas 0.2323 0.231 -1.074 -0.18492 ## California 0.2783 1.263 1.759 2.06782 ## Colorado 0.0257 0.399 0.861 1.86497

Silhouhette和Gap统计方法

简化格式如下:

下面的R代码确定k均值聚类的最佳聚类数:

# Elbow method fviz_nbclust(df, kmeans, method = "wss") + geom_vline(xintercept = 4, linetype = 2)+ labs(subtitle = "Elbow method") # Silhouette method # Gap statistic

## Clustering k = 1,2,..., K.max (= 10): .. done
## Bootstrapping, b = 1,2,..., B (= 50)  [one "." per sample]:
## .................................................. 50

根据这些观察,有可能将k = 4定义为数据中的最佳簇数。

30个索引,用于选择最佳数目的群集

数据:矩阵

  • diss:要使用的相异矩阵。默认情况下,diss = NULL,但是如果将其替换为差异矩阵,则距离应为“ NULL”
  • distance:用于计算差异矩阵的距离度量。可能的值包括“ euclidean”,“ manhattan”或“ NULL”。
  • min.nc,max.nc:分别为最小和最大簇数
  • 要为kmeans 计算NbClust(),请使用method =“ kmeans”。
  • 要计算用于层次聚类的NbClust(),方法应为c(“ ward.D”,“ ward.D2”,“ single”,“ complete”,“ average”)之一。

下面的R代码为k均值计算 :

## Among all indices:
## ===================
## * 2 proposed  0 as the best number of clusters
## * 10 proposed  2 as the best number of clusters
## * 2 proposed  3 as the best number of clusters
## * 8 proposed  4 as the best number of clusters
## * 1 proposed  5 as the best number of clusters
## * 1 proposed  8 as the best number of clusters
## * 2 proposed  10 as the best number of clusters
##
## Conclusion
## =========================
## * According to the majority rule, the best number of clusters is  2 .

根据多数规则,最佳群集数为2。

曲线聚类_R语言确定聚类的最佳簇数:3种聚类优化方法相关推荐

  1. pvrect r语言 聚类_R语言一条命令实现基于样本和距离的聚类分析

    上一篇文章给大家介绍了利用 R语言的 hclust()进行聚类分析的步骤,已经很简单了,但是依然有不少小伙伴来问 "老师,还有更简单的方法吗,最好是一条命令那种",为了满足的大家的 ...

  2. pvrect r语言 聚类_R语言常用统计方法包+机器学习包(名称、简介)

    上期帮大家盘点了一下R中常用的可视化包,这期将简要盘点一下关于统计分析与机器学习的R包,并通过简要介绍包的特点来帮助读者深入理解可视化包. 本文作者为"食物链顶端"学习群中的小伙伴 ...

  3. R循环有两个_R语言数据分析与挖掘(第九章):聚类分析(2)——层次聚类

    层次聚类(hierarchical clustering)基于簇间的相似度在不同层次上分析数据,从而形成树形的聚类结构,层次聚类一般有两种划分策略:自底向上的聚合(agglomerative)策略和自 ...

  4. keil c语言 延迟程序,Keil C51程序设计中几种精确延时方法

    前几天时间在做一个基于51单片机开发板的等精度频率计,用LCD1602液晶显示的,晶振是22.1184MHZ,用得是测频率法,目的是想做到能够测试0--900KHZ的信号. 液晶显示部分花了我好几天才 ...

  5. r语言热图对列不进行聚类_R语言:手把手教你画pheatmap热图

    R语言:手把手教你画pheatmap热图 微生态 导读: pheatmap默认会对输入矩阵数据的行和列同时进行聚类,但是也可以通过布尔型参数cluster_rows和cluster_cols设置是否对 ...

  6. python鸢尾花数据集聚类_R语言鸢尾花iris数据集的层次聚类分析

    介绍 本文在数据集上展示了如何使用dendextend R软件包来增强Hierarchical Cluster Analysis(更好的可视化和灵敏度分析). 背景 鸢尾花数据集 我们可以看到,Set ...

  7. r语言热图对列不进行聚类_R语言 Pheatmap 画非聚类 热图

    python pandas 加 R Pheatmap 画非聚类热图 最近需求一个需求图 f9cb530a4fb553c2f42fd8f157cd451.png 上面的annotation部分用作临床注 ...

  8. pvrect r语言 聚类_R语言实现KEGG通路富集可视化

    用过KEGG的朋友应该都很熟悉里面的通路地图.你是否想过如果自己可以控制通路图将自己的基因绘制在一个通路图中,那么今天给大家介绍一个新推出的Bioconductor软件包pathview.这个包可以进 ...

  9. r roc函数_R语言中绘制ROC曲线

    两种方法: 第一种,摘自别人的方法: ROC曲线,做分类时经常会用到的一种结果表现方法.诸如此类的工作,首选工具当然是R.在CRAN上搜了一下,找到一个叫ROCR的包.尽管这个包已经很久没更新了,但用 ...

最新文章

  1. C语言堆排序Heap Sort算法(附完整源码)
  2. SpringMVC源码解析与思考
  3. NS2:undefined reference to `xxx' collect2: error: ld returned 1 exit status
  4. java输入语句怎么写_java中输入语句是怎么写的
  5. c语言输出最大的数ns流程图_急!!!!c语言NS流程图
  6. 用CSS样式制作小三角和小箭头
  7. 计算机设计大赛海报素材,海报创意设计比赛方案(word版)
  8. 深入WEP密码破解原理
  9. 我用FreeMind
  10. 手机破解并连接WiFi后,可以通过USB数据线与电脑共享WiFi
  11. 金蝶K3 SQL报表系列-委外未勾稽明细表金蝶K3 SQL报表系列-委外未勾稽明细表
  12. AI 入行那些事儿(13)人工智能的三类技术岗位
  13. android开发平台的框架原理,赶紧收藏起来
  14. H.266/VVC:色度帧内预测模式之CCLM技术
  15. 卷积神经网络在句子分类上的应用[翻译]
  16. A Game of Thones(65)
  17. 笑话大全查询易语言代码
  18. 在IT企业需要具有的软实力以及怎么在面试时占据优势?
  19. 今天情人节.......
  20. 2019,不过是另一个开始

热门文章

  1. 设计模式笔记六:适配器模式
  2. 三星 6.01 android操作系统耗电,三星6.01系统耗电加快是为什么
  3. 2021-10-13企业财务数据风险预警之随机森林
  4. Ubuntu18.04安装opencv出现的一系列问题解决方法(持续更新~)
  5. 优达学城深度学习之六——TensorFlow卷积神经网络
  6. 11_less中的条件判断
  7. java的三大特征详解
  8. 数据逻辑讨论计算机,1绪论信息技术算法与程序福建教师招考.ppt
  9. python程序设计搜题软件下载_智慧职教云课堂APPPython程序设计答案搜题公众号
  10. python的sleep_python的time.sleep()有多准确?