Python 聚类
1. 简介
聚类是一种无监督学习方法,用于将相似的数据点归为一类。Python提供了多种聚类算法的实现,例如K均值聚类、层次聚类和DBSCAN等。本文将介绍几种常见的聚类算法及其在Python中的实现。
2. K均值聚类
K均值聚类是一种最简单但最常用的聚类算法。它将数据点划分为k个簇,每个簇的中心点被称为聚类中心。K均值聚类的步骤如下:
- 随机选择k个数据点作为初始聚类中心。
- 根据每个数据点与聚类中心的距离,将数据点分配给最近的聚类中心。
- 更新聚类中心为每个簇的均值。
- 重复步骤2和步骤3,直到聚类中心不再发生变化或达到最大迭代次数。
下面是使用Python实现K均值聚类的示例代码:
运行结果:
[0 1 1 1 0 2 1 0 0 1 0 2 0 0 2 0 2 0 0 0 2 0 0 2 1 1 2 2 0 1 1 2 0 2 0 2 0
2 0 2 1 0 2 0 2 2 1 0 0 1 2 0 2 0 2 0 2 0 2 2 1 1 0 0 1 2 1 0 1 2 0 1 1 0 2
1 0 1 0 0 0 0 1 2 0 1 0 1 2 2 1 0 2 1 2 0 2 2 2 2 0 2 0 2 1]
从结果可以看出,聚类算法将数据点分成了3个簇,并为每个数据点分配了一个簇的标签。
3. 层次聚类
层次聚类是一种自下而上的聚类算法。它首先将每个数据点视为一个簇,然后逐步合并最相似的簇,直到达到预设的聚类数量。层次聚类的步骤如下:
- 初始化每个数据点为一个簇。
- 计算两个簇之间的距离,并找到最相似的两个簇。
- 合并最相似的两个簇为一个新的簇。
- 重复步骤2和步骤3,直到达到预设的聚类数量。
下面是使用Python实现层次聚类的示例代码:
运行结果:
[2 0 0 0 2 1 0 2 2 0 2 1 2 2 1 2 1 2 2 2 1 2 2 1 0 0 1 1 2 0 0 1 2 1 2 1 2
1 2 1 0 2 1 2 1 1 0 2 2 0 1 2 1 2 1 2 1 2 1 1 0 0 2 2 0 1 0 2 0 1 2 0 0 2 1
0 2 0 2 2 2 2 0 1 2 0 2 0 1 1 0 2 1 0 1 2 1 1 1 1 2 1 2 1]
从结果可以看出,层次聚类算法将数据点分成了3个簇,并为每个数据点分配了一个簇的标签。
4. DBSCAN
DBSCAN是一种基于密度的聚类算法,可以有效处理数据集中的噪声和离群点。它将密度高的区域划分为簇,并将稀疏的区域视为噪声。DBSCAN的步骤如下:
- 随机选择一个未访问的数据点。
- 如果该数据点的邻域内包含足够数量的数据点,则创建一个新簇,并将该点及其邻域内的点添加到簇中。
- 重复步骤2,直到所有的数据点都被访问过。
- 如果存在未分配到任何簇的点,则将其标记为噪声。
下面是使用Python实现DBSCAN的示例代码: