Javatpoint标志
Javatpoint标志

在机器学习层次聚类

分层聚类是另一个无监督的机器学习算法,用于无标号数据集分组到一个集群,也被称为层序聚类分析或杂环胺。

在该算法中,我们发展集群的层次结构树的形式,这就是所谓的树状结构系统树图

有时候k -均值聚类和层次聚类的结果看起来类似,但他们都不同取决于他们是如何工作的。由于没有要求预先确定集群的数量,因为我们做的k - means算法。

层次聚类方法有两种方法:

  1. 烧结的:凝结的是自底向上方法,该算法首先把所有数据点作为单个集群和合并到一个集群了。
  2. 分裂:分裂算法是反向的,因为它是一个凝结的算法自顶向下的方法。

为什么层次聚类?

我们已经有其他聚类算法等k - means聚类,那么为什么我们需要层次聚类?所以,正如我们所看到的k - means聚类算法有一些挑战,这是预定数量的集群,它总是试图创建集群的大小相同。解决这两个问题,我们可以选择的层次聚类算法,在该算法中,我们不需要预定义的知识集群的数量。

在这个主题中,我们将讨论会凝聚的层次聚类算法。

会凝聚的层次聚类

会凝聚的层次聚类算法是一种受欢迎的HCA的例子。组数据集到集群,它遵循了自底向上的方法。这意味着,该算法认为每个数据集作为一个集群在一开始,然后开始结合集群的最亲密的一对在一起。它,直到所有的集群都合并到一个集群包含所有数据集。

这种层次的集群系统树图的形式表示。

如何会凝聚的层次聚类的工作吗?

AHC算法的工作可以解释使用以下步骤:

  • 步骤1:创建每个数据点作为一个集群。假设有N数据点,所以集群的数量也将N。
    在机器学习层次聚类
  • 步骤2:取两个最近的数据点或集群并将它们合并成一个集群。所以现在将n - 1集群。
    在机器学习层次聚类
  • 步骤3:再一次,最近的两个集群并将它们合并在一起形成一个集群。会有n -集群。
    在机器学习层次聚类
  • 步骤4:重复步骤3,直到只剩下一个集群。所以,我们将得到以下集群。考虑下面的图片:
    在机器学习层次聚类
    在机器学习层次聚类
    在机器学习层次聚类
  • 步骤5:一旦所有的组合成一个大的集群,集群发展系统树图将集群的问题。

注意:为了更好的理解层次聚类,建议看看k - means聚类

措施之间的距离两个集群

正如我们所见,最亲密的距离两个集群之间的层次聚类是至关重要的。有多种方法来计算两个集群之间的距离,而这些决定的规则聚类方法。这些措施被称为联系方法。下面给出的一些受欢迎的联系方法:

  1. 单一的链接:这是最短的距离最近的点之间的集群。考虑下面的图片:
    在机器学习层次聚类
  2. 完整的链接:这是最远的两个点之间的距离两个不同的集群。这是一个流行的链接方法比单一连结形成严格的集群。
    在机器学习层次聚类
  3. 平均链接:的联系方法,每一对数据集之间的距离相加,然后除以总数量的数据集来计算两个集群之间的平均距离。它也是最受欢迎的链接方法。
  4. 重心链接:联系方法质心之间的距离的计算集群。考虑下面的图片:
    在机器学习层次聚类

从above-given方法,我们可以应用的根据问题的类型或业务需求。

沃金的系统树图层次聚类

系统树图是树状结构,这主要是用于存储记忆,HC算法每一步执行。系统树图的情节,y轴显示数据点之间的欧几里得距离,和x轴显示所有给定的数据集的数据点。

系统树图的工作可以解释使用下面的图:

在机器学习层次聚类

在上面的图中,左边部分是展示如何创建在烧结的集群,集群和正确的部分是显示相应的系统树图。

  • 正如我们上面所讨论的,首先,据点P2和P3结合在一起,形成一个集群,相应地创建一个系统树图,连接P2和P3矩形。高度是根据数据点之间的欧几里得距离决定。
  • 在下一步中,P5和P6形成一个集群,创建相应的系统树图。它比之前的高,因为之间的欧几里得距离P5和P6有点大于P2和P3。
  • 再次,创建两个新系统树图,结合P1, P2, P3和系统树图,和P4, P5, P6,在另一个系统树图。
  • 最后,创建最终的系统树图,结合了所有的数据点在一起。

我们可以减少各级系统树图树结构按我们的要求。

Python会凝聚的层次聚类的实现

现在我们将看到实际使用Python会凝聚的层次聚类算法的实现。要实现这一点,我们将使用相同的数据集的问题,我们已经使用在前面的k - means聚类的话题,我们可以比较两个概念很容易。

数据集包含的信息的客户参观购物中心购物。商场所有者想找一些或一些特定的行为模式的客户使用数据集信息。

使用Python AHC的步骤实现:

实现的步骤将是相同的k - means聚类,除了一些变化等方法找到集群的数量。下面的步骤:

  1. 数据预处理
  2. 寻找最优数量的集群使用系统树图
  3. 训练层次聚类模型
  4. 集群可视化

数据预处理步骤:

在这一步中,我们将为我们的模型导入库和数据集。

  • 导入库

上面的代码行用于导入库来执行特定的任务,如numpy数学运算,matplotlib用于绘制图表或散点图,熊猫导入的数据集。

  • 导入数据集

正如上面所讨论的,我们已经导入相同的数据集Mall_Customers_data.csv,当我们在k - means聚类所做的那样。考虑下面的输出:

在机器学习层次聚类
  • 提取特征的矩阵

这里我们只提取矩阵的特性,我们没有任何进一步的因变量的相关信息。代码如下所示:

这里有只提取3和4列,我们将使用一个2 d图查看集群。因此,我们正在考虑年度收入和支出得分矩阵的特性。

第二步:找到最优数量的集群使用系统树图

现在我们将找到最优数量的集群使用的系统树图模型。为此,我们将使用scipy图书馆,因为它提供了一个函数,将直接返回我们的代码的系统树图。考虑下面的代码:

在上面的代码行,我们已经导入了层次结构scipy库的模块。这个模块提供了我们一个方法shc.denrogram (),这需要链接()作为参数。连杆函数用于定义两个集群之间的距离,这里我们通过了x(矩阵的特性),和方法”病房”流行的链接在层次聚类的方法。

其余的代码行来描述系统树图的标签。

输出:

通过执行上面的代码,我们将得到下面的输出:

在机器学习层次聚类

使用这个系统树图,现在我们将决定我们的模型的最优数量的集群。为此,我们会找到的最大垂直距离这并不减少任何单杠。考虑下面的图:

在机器学习层次聚类

在上面的图中,我们展示了垂直距离不削减单杠。我们可以想象,4th距离是最大的,所以根据这个,集群的数量将是5(这个范围的竖线)。我们也可以把2nd数量大约等于4th距离,不过我们将考虑5集群因为相同的计算k - means算法。

所以,最优数量的集群将5,我们将在下一步训练模型,使用相同的。

步骤3:训练层次聚类模型

我们知道所需的最优数量的集群,我们现在可以训练我们的模型。下面的代码是:

在上面的代码中,我们已经导入了AgglomerativeClustering类的集群模块scikit图书馆学习。

然后我们创建这个类的对象命名hc。AgglomerativeClustering类接受以下参数:

  • n_clusters = 5:它定义了集群的数量,我们已经在这里5,因为它是最优数量的集群。
  • 亲和力=“欧几里得”:它是一种度量,用于计算的联系。
  • 链接=“病房”:它定义了标准的联系,在这里我们使用了“沃德”链接。这个方法是流行的联系方法,我们已经用于创建系统树图。它在每个集群降低方差。

在最后一行中,我们已经创建了因变量y_pred适合或火车模型。它不仅训练模型,也返回每个数据点所属的集群。

执行上面的代码后,如果我们通过变量explorer选项Sypder IDE,我们可以检查y_pred变量。我们可以比较与y_pred变量原始数据集。考虑下面的图片:

在机器学习层次聚类

在上面的图片中,我们可以看出y_pred显示集群值,这意味着客户id 1属于5th集群(索引从0开始,所以4意味着5th集群),客户id 2属于4th集群,等等。

步骤4:可视化集群

训练我们的模型成功,现在我们可以想象相对应的集群数据集。

在这里我们将使用相同的代码行是在k - means聚类,除了一个变化。在这里我们不会阴谋的重心在k - means,因为这里我们使用系统树图来确定最优数量的集群。下面的代码是:

输出:通过执行上面的代码行数,我们将得到下面的输出:

在机器学习层次聚类
下一个话题 k - means聚类算法





Youtube 加入我们的Youtube频道视频:现在加入

反馈


帮助别人,请分享

脸谱网 推特 pinterest

学习最新的教程


准备


热门的技术


B。科技/ MCA






Baidu
map