层次聚类是一种无监督学习算法,用于将数据集划分为多个簇。以下是层次聚类的基本步骤和常用方法。

基本步骤

  1. 数据预处理:对数据进行标准化或归一化处理,确保每个特征的数据范围一致。
  2. 距离计算:选择合适的距离度量方法,如欧氏距离、曼哈顿距离等。
  3. 构建聚类树:通过距离计算,将最近的两个簇合并,逐步构建聚类树。
  4. 剪枝:根据聚类树的高度和簇的稳定性,选择合适的剪枝点,得到最终的簇划分。

常用方法

  1. 单链接法:最近邻聚类,将距离最近的两个簇合并。
  2. 完全链接法:最远邻聚类,将距离最远的两个簇合并。
  3. 平均链接法:将两个簇的距离定义为它们各自成员距离的平均值。
  4. ** Ward 聚类法**:最小化簇内距离平方和,使簇间距离最大化。

实践示例

以下是一个使用 Python 的 scikit-learn 库进行层次聚类的示例:

from sklearn.cluster import AgglomerativeClustering
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt

# 生成模拟数据
X, _ = make_blobs(n_samples=50, centers=3, random_state=0)

# 创建层次聚类对象
cluster = AgglomerativeClustering(n_clusters=3)

# 对数据进行聚类
cluster.fit_predict(X)

# 绘制聚类结果
plt.scatter(X[:, 0], X[:, 1], c=cluster.labels_, cmap='rainbow')
plt.show()

扩展阅读

想要了解更多关于层次聚类的知识,可以阅读以下教程:

层次聚类