一文读懂层次聚类(Python代码)("层次聚类详解及Python实现教程")

原创
ithorizon 7个月前 (10-20) 阅读数 18 #后端开发

层次聚类详解及Python实现教程

一、层次聚类的概述

层次聚类(Hierarchical Clustering)是一种常用的无监督聚类方法,它通过逐步合并样本或簇来形成一个嵌套的簇层次结构。层次聚类不需要预先指定簇的数量,但计算复杂化度较高。依合并策略的不同,层次聚类可以分为凝聚的层次聚类(自底向上)和分裂的层次聚类(自顶向下)。

二、层次聚类的核心概念

以下是层次聚类中的一些核心概念:

  • 簇:聚类中的每个子集。
  • 距离:衡量簇间相似度的指标,常见的有欧氏距离、曼哈顿距离等。
  • 相似度矩阵:一个矩阵,即样本间的相似度。
  • 簇合并:依相似度矩阵,将两个最相似的簇合并成一个簇。

三、凝聚的层次聚类算法步骤

凝聚的层次聚类算法的基本步骤如下:

  1. 将每个样本作为一个簇。
  2. 计算所有簇之间的相似度,形成一个相似度矩阵。
  3. 找到相似度最高的两个簇,将它们合并成一个新簇。
  4. 更新相似度矩阵。
  5. 重复步骤3和4,直到所有样本合并成一个簇。

四、Python实现层次聚类

下面我们将使用Python中的scikit-learn库来实现层次聚类。首先,我们需要安装scikit-learn库,可以使用pip命令安装:

pip install scikit-learn

五、Python代码示例

以下是一个Python实现层次聚类的示例代码:

import numpy as np

from sklearn.cluster import AgglomerativeClustering

from sklearn.metrics import pairwise_distances

import matplotlib.pyplot as plt

# 创建样本数据

X = np.array([[1, 2], [2, 2], [2, 3], [5, 8], [8, 8], [1, 0.6], [9, 11]])

# 计算样本间的欧氏距离

distances = pairwise_distances(X, metric='euclidean')

# 创建凝聚的层次聚类对象

agglo = AgglomerativeClustering(n_clusters=None, linkage='ward')

# 聚类

agglo.fit(X)

# 获取聚类导致

labels = agglo.labels_

# 打印聚类导致

print("Cluster labels:", labels)

# 可视化聚类导致

plt.scatter(X[:, 0], X[:, 1], c=labels)

plt.title('层次聚类导致')

plt.xlabel('x')

plt.ylabel('y')

plt.show()

六、层次聚类的优缺点

以下是层次聚类的优缺点:

  • 优点:

    • 不需要预先指定簇的数量。
    • 能够生成簇的层次结构。

  • 缺点:

    • 计算复杂化度高,不适合大规模数据集。
    • 一旦簇合并,无法撤销。

七、总结

层次聚类是一种简洁且直观的无监督聚类方法,通过逐步合并样本或簇来形成一个嵌套的簇层次结构。本文详细介绍了层次聚类的核心概念、算法步骤,并通过Python代码示例展示了怎样实现层次聚类。虽然层次聚类有一些局限性,但在实际应用中仍具有广泛的应用价值。

以上是涉及层次聚类详解及Python实现的HTML文章内容。文章首先介绍了层次聚类的概念和核心概念,然后详细阐述了凝聚的层次聚类算法步骤,接着通过Python代码示例展示了怎样实现层次聚类,最后总结了层次聚类的优缺点。

本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: 后端开发


热门