一文读懂层次聚类(Python代码)("Python实现层次聚类详解:一文轻松掌握")

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

Python实现层次聚类详解:一文轻松掌握

一、层次聚类简介

层次聚类(Hierarchical Clustering)是一种无监督学习算法,它通过逐步合并相似的数据点来形成聚类。层次聚类可以分为两种类型:凝聚的层次聚类(自底向上)和分裂的层次聚类(自顶向下)。本文重点介绍凝聚的层次聚类。

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

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

  1. 将每个数据点作为一个单独的聚类。
  2. 计算所有聚类之间的相似度。
  3. 合并最相似的聚类。
  4. 更新聚类集合。
  5. 重复步骤2-4,直到只剩下一个聚类。

三、Python实现层次聚类

下面我们将使用Python实现层次聚类算法,重点使用scikit-learn库中的AgglomerativeClustering类。

3.1 准备数据

首先,我们需要准备一些数据来演示层次聚类。这里我们使用一个易懂的二维数据集。

import numpy as np

from sklearn.datasets import make_blobs

# 生成数据

X, _ = make_blobs(n_samples=100, centers=4, cluster_std=0.5, random_state=0)

3.2 计算相似度矩阵

层次聚类需要计算数据点之间的相似度。我们可以使用距离度量,如欧氏距离。

from scipy.spatial.distance import pdist, squareform

# 计算距离矩阵

dist_matrix = squareform(pdist(X, metric='euclidean'))

3.3 创建层次聚类模型

接下来,我们使用scikit-learn的AgglomerativeClustering创建一个层次聚类模型。

from sklearn.cluster import AgglomerativeClustering

# 创建层次聚类模型

cluster = AgglomerativeClustering(n_clusters=4, linkage='ward')

3.4 拟合模型并获取聚类因此

现在,我们可以使用模型对数据进行拟合,并获取聚类因此。

# 拟合模型

cluster.fit(X)

# 获取聚类标签

labels = cluster.labels_

3.5 可视化因此

最后,我们可以使用matplotlib库将聚类因此可视化。

import matplotlib.pyplot as plt

# 绘制数据点

plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis', marker='o')

plt.title('层次聚类因此')

plt.xlabel('Feature 1')

plt.ylabel('Feature 2')

plt.show()

四、层次聚类的评估指标

评估层次聚类因此的好坏可以使用多种指标,如轮廓系数(Silhouette Coefficient)和Calinski-Harabasz指数等。这里我们以轮廓系数为例进行说明。

from sklearn.metrics import silhouette_score

# 计算轮廓系数

silhouette_avg = silhouette_score(X, labels)

print(f'轮廓系数: {silhouette_avg}')

五、层次聚类算法的优缺点

层次聚类算法具有以下优点:

  • 算法易懂,易于实现。
  • 不需要预先指定聚类数量。

但也存在以下缺点:

  • 计算繁复度高,特别是对于大规模数据集。
  • 一旦聚类合并,无法回溯。

六、总结

层次聚类是一种有效的无监督学习算法,通过逐步合并相似的数据点来形成聚类。本文详细介绍了Python实现层次聚类的方法,包括数据准备、相似度计算、模型创建、拟合和因此可视化。通过实例演示,我们轻松掌握了层次聚类的核心概念和实现技巧。

以上是使用HTML编写的文章内容,包含了层次聚类的简介、算法步骤、Python实现、评估指标、优缺点和总结。文章中的代码部分使用`

`标签进行排版,确保了代码的整洁和可读性。

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

文章标签: 后端开发


热门