关于数据挖掘:层次聚类算法

9次阅读

共计 1477 个字符,预计需要花费 4 分钟才能阅读完成。

动动发财的小手,点个赞吧!

  • 档次聚类是一种构建聚类层次结构的聚类算法。该算法从调配给它们本人的集群的所有数据点开始。而后将两个最近的集群合并到同一个集群中。最初,当只剩下一个集群时,该算法终止。
  • 能够通过观察树状图来抉择最能形容不同组的簇数的决定。聚类数的最佳抉择是树状图中垂直线的数量,该水平线能够垂直横穿最大间隔而不与聚类相交。

1. 简介

档次聚类(Hierarchical clustering)是一种常见的聚类算法,它将数据点逐渐地合并成越来越大的簇,直到达到某个进行条件。档次聚类能够分为两种办法:自下而上的聚合法(agglomerative)和自上而下的分裂法(divisive)。在聚合法中,每个数据点最后被视为一个独自的簇,而后每次迭代将间隔最近的两个簇合并为一个新的簇,直到所有点都合并成一个大簇。在分裂法中,最后的簇被视为一个独自的簇,而后每次迭代将以后簇中距离最远的两个点分成两个新的簇,直到每个点都是一个簇为止。

2. 工作原理

  1. 使每个数据点成为单点簇→造成 N 个簇
  2. 取间隔最近的两个数据点,使之成为一个簇→造成 N - 1 个簇
  3. 取最近的两个簇并使它们成为一个簇→造成 N - 2 个簇。
  4. 反复第 3 步,直到只剩下一个集群。

有几种办法能够测量聚类之间的间隔以确定聚类规定,它们通常称为链接办法。一些常见的链接办法是:

  • 齐全链接:两个集群之间的间隔定义为每个集群中两点之间的最长距离。
  • 单链接:两个集群之间的间隔定义为每个集群中两点之间的最短距离。此链接可用于检测数据集中的高值,这些值可能是异样值,因为它们将在最初合并。
  • 均匀链接:两个聚类之间的间隔定义为一个聚类中的每个点与另一个聚类中的每个点之间的均匀间隔。
  • Centroid-linkage:找到聚类 1 的质心和聚类 2 的质心,而后在合并前计算两者之间的间隔。

不同的链接办法导致不同的集群。

3. 树状图

树状图是一种显示不同数据集之间的档次关系。正如曾经说过的,树状图蕴含了档次聚类算法的记忆,因而只需查看树状图就能够晓得聚类是如何造成的。

4. Code

import numpy as np
from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt

# 生成随机数据
np.random.seed(0)
X = np.random.randn(15, 2)

# 计算间隔矩阵
Z = linkage(X, 'ward')

# 绘制树形图
plt.figure(figsize=(10, 5))
plt.title('Hierarchical Clustering Dendrogram')
plt.xlabel('Sample index')
plt.ylabel('Distance')
dendrogram(
    Z,
    leaf_rotation=90.,
    leaf_font_size=8.,
)
plt.show()

在这个示例中,咱们首先应用 NumPy 生成了一个随机的二维数据集 X,其中蕴含 15 个样本。而后,咱们应用 SciPy 中的 linkage 函数计算间隔矩阵 Z,这里应用了“ward”办法来计算簇之间的间隔。最初,咱们应用 Matplotlib 来绘制树形图,其中 leaf_rotation 和 leaf_font_size 参数用于调整叶子节点的旋转角度和字体大小。

这个示例中生成的树形图显示了不同样本之间的间隔,并且依据间隔合并了不同的簇。能够通过树形图来确定最优的簇的数量,能够在图中找到最大间隔的地位,而后画一条水平线,这个水平线和垂直线的交点就是最优的簇的数量。

本文由 mdnice 多平台公布

正文完
 0