层次聚类是一种无监督学习算法,用于将数据集中的对象分组为具有相似性的簇。本文将介绍层次聚类的基本概念、算法步骤以及如何使用Python进行层次聚类分析。

基本概念

  • 簇(Cluster):一组相似的对象集合。
  • 相似度:衡量对象之间相似性的指标,常用的相似度度量方法有欧氏距离、曼哈顿距离等。
  • 距离矩阵:表示数据集中所有对象之间相似度的矩阵。

算法步骤

  1. 计算距离矩阵:首先计算数据集中所有对象之间的相似度,并构建距离矩阵。
  2. 构建层次树:根据距离矩阵,将对象逐步合并成簇,并构建层次树。
  3. 选择簇:根据层次树,选择合适的簇数,将对象分配到相应的簇中。

Python实现

以下是一个使用Python进行层次聚类的示例代码:

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

# 创建数据集
data = np.array([[1, 2], [2, 3], [3, 5], [5, 4], [4, 6]])

# 计算距离矩阵
Z = linkage(data, 'ward')

# 绘制层次树
plt.figure(figsize=(10, 7))
dendrogram(Z)
plt.title('层次树')
plt.xlabel('样本')
plt.ylabel('距离')
plt.show()

扩展阅读

图片展示

层次聚类算法的层次树示例:

层次树