层次聚类是一种无监督学习算法,用于将数据集划分为多个簇。以下是层次聚类的基本步骤和常用方法。
基本步骤
- 数据预处理:对数据进行标准化或归一化处理,确保每个特征的数据范围一致。
- 距离计算:选择合适的距离度量方法,如欧氏距离、曼哈顿距离等。
- 构建聚类树:通过距离计算,将最近的两个簇合并,逐步构建聚类树。
- 剪枝:根据聚类树的高度和簇的稳定性,选择合适的剪枝点,得到最终的簇划分。
常用方法
- 单链接法:最近邻聚类,将距离最近的两个簇合并。
- 完全链接法:最远邻聚类,将距离最远的两个簇合并。
- 平均链接法:将两个簇的距离定义为它们各自成员距离的平均值。
- ** 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()
扩展阅读
想要了解更多关于层次聚类的知识,可以阅读以下教程:
层次聚类