原文链接:
R语言中实现层次聚类模型tecdat.cn![6a59621d18c1b5a17fe2b12f081bc9d9.png](https://i-blog.csdnimg.cn/blog_migrate/912e6d535210fe41bea7aef268384da7.jpeg)
大家好!在这篇文章中,我将向你展示如何在R中进行层次聚类。
什么是分层聚类?
分层聚类是一种可供选择的方法,它可以自下而上地构建层次结构,并且不需要我们事先指定聚类的数量。
该算法的工作原理如下:
将每个数据点放入其自己的群集中。
确定最近的两个群集并将它们组合成一个群集。
重复上述步骤,直到所有数据点位于一个群集中。
一旦完成,它通常由树状结构表示。
让我们看看分层聚类算法可以做得多好。我们可以使用hclust这个。hclust要求我们以距离矩阵的形式提供数据。我们可以通过使用dist。默认情况下,使用完整的链接方法。
这会生成以下树形图:
![d57157f7646c0cdcd214868f5d240191.png](https://i-blog.csdnimg.cn/blog_migrate/811e0b6ebc63e029955b167f391ae627.jpeg)
从图中我们可以看出,群集总数的最佳选择是3或4:
![fc707669d9fed5c02e62edcbb0ba0434.png](https://i-blog.csdnimg.cn/blog_migrate/6e514307efb6491e47f8df36a673435c.jpeg)
要做到这一点,我们可以使用所需数量的群集来切断树cutree。
现在,让我们将它与原始物种进行比较。
它看起来像算法成功地将物种setosa的所有花分为簇1,并将virginica分为簇2 。
![3fcb36f4bb5e4016b7acb3c3c32b085b.png](https://i-blog.csdnimg.cn/blog_migrate/235992f02ca6447460f25cb9855abd80.png)
让我们看看我们是否可以通过使用不同的连接方法更好。这一次,我们将使用平均连接方法:
这给了我们以下树状图:
![0732f246c1c74b1e040ca15117602483.png](https://i-blog.csdnimg.cn/blog_migrate/a852075b170606fcbf73c926689c184c.png)
我们可以看到,群集数量的两个最佳选择是3或5.让我们用cutree它来将它降到3个群集。
我们可以看到,这一次,该算法在聚类数据方面做得更好,只有6个数据点出错。
我们可以如下绘制它与原始数据进行比较:
这给了我们下面的图表:
![a1c05b2b84ff5a2a61d1dd83e8f8556c.png](https://i-blog.csdnimg.cn/blog_migrate/11b92b55bcc5e225e5f4b38e4d7ff6cc.png)
内部颜色与外部颜色不匹配的所有点都是不正确聚类的点。