R语言中实现层次聚类模型

Python043

R语言中实现层次聚类模型,第1张

R语言中实现层次聚类模型

大家好!在这篇文章中,我将向你展示如何在R中进行层次聚类。

什么是分层聚类?

分层聚类是一种可供选择的方法,它可以自下而上地构建层次结构,并且不需要我们事先指定聚类的数量。

算法的工作原理如下:

将每个数据点放入其自己的群集中。

确定最近的两个群集并将它们组合成一个群集。

重复上述步骤,直到所有数据点位于一个群集中。

一旦完成,它通常由树状结构表示。

让我们看看分层聚类算法可以做得多好。我们可以使用hclust这个。hclust要求我们以距离矩阵的形式提供数据。我们可以通过使用dist。默认情况下,使用完整的链接方法。

这会生成以下树形图:

从图中我们可以看出,群集总数的最佳选择是3或4:

要做到这一点,我们可以使用所需数量的群集来切断树cutree。

现在,让我们将它与原始物种进行比较。

它看起来像算法成功地将物种setosa的所有花分为簇1,并将virginica分为簇2,但是与花斑杂交有困难。如果你看看显示不同物种的原始图,你可以理解为什么:

让我们看看我们是否可以通过使用不同的连接方法更好。这一次,我们将使用平均连接方法:

这给了我们以下树状图:

我们可以看到,群集数量的两个最佳选择是3或5.让我们用cutree它来将它降到3个群集。

我们可以看到,这一次,该算法在聚类数据方面做得更好,只有6个数据点出错。

我们可以如下绘制它与原始数据进行比较:

这给了我们下面的图表:

内部颜色与外部颜色不匹配的所有点都是不正确聚类的点。

模式识别的三大核心问题包括:

特征选择 特征变换 都能够达到降维的目的,但是两者所采用的方式方法是不同的。

特征提取 主要是通过分析特征间的关系,变换原来特征空间,从而达到压缩特征的目的。主要方法有:主成分分析(PCA)、离散K-L变换法(DKLT)等。

特征选择 选择方法是从原始特征集中挑选出子集,是原始特征的选择和组合,并没有更改原始特征空间,特征选择的过程必须确保不丢失重要特征。主要方法有:遗传算法(GA)、统计检验法、分支定界法等。

这里主要讲讲特征选择中 遗传算法 以及它的R语言实现(因为要写作业,虽然不一定写对了)。

遗传算法受进化论启发,根据“物竞天择,适者生存”这一规则,模拟自然界进化机制,寻找目标函数的最大值。

采用遗传算法对男女生样本数据中的身高、体重、鞋码、50m成绩、肺活量、是否喜欢运动共6个特征进行特征选择。

由于有6个特征,因此选用6位0/1进行编码,1表示选中该特征。

适应度函数的实现

示例

结果如下

有什么不对的地方欢迎大家在评论区指出。