Python 聚类

Python 聚类

Python 聚类

1. 简介

聚类是一种无监督学习方法,用于将相似的数据点归为一类。Python提供了多种聚类算法的实现,例如K均值聚类、层次聚类和DBSCAN等。本文将介绍几种常见的聚类算法及其在Python中的实现。

2. K均值聚类

K均值聚类是一种最简单但最常用的聚类算法。它将数据点划分为k个簇,每个簇的中心点被称为聚类中心。K均值聚类的步骤如下:

  1. 随机选择k个数据点作为初始聚类中心。
  2. 根据每个数据点与聚类中心的距离,将数据点分配给最近的聚类中心。
  3. 更新聚类中心为每个簇的均值。
  4. 重复步骤2和步骤3,直到聚类中心不再发生变化或达到最大迭代次数。

下面是使用Python实现K均值聚类的示例代码:

from sklearn.cluster import KMeans
import numpy as np

# 生成随机数据
np.random.seed(0)
X = np.random.randn(100, 2)

# 聚类
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)

# 输出聚类结果
labels = kmeans.labels_
print(labels)
Python

运行结果:

[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. 层次聚类

层次聚类是一种自下而上的聚类算法。它首先将每个数据点视为一个簇,然后逐步合并最相似的簇,直到达到预设的聚类数量。层次聚类的步骤如下:

  1. 初始化每个数据点为一个簇。
  2. 计算两个簇之间的距离,并找到最相似的两个簇。
  3. 合并最相似的两个簇为一个新的簇。
  4. 重复步骤2和步骤3,直到达到预设的聚类数量。

下面是使用Python实现层次聚类的示例代码:

from sklearn.cluster import AgglomerativeClustering
import numpy as np

# 生成随机数据
np.random.seed(0)
X = np.random.randn(100, 2)

# 聚类
clustering = AgglomerativeClustering(n_clusters=3)
clustering.fit(X)

# 输出聚类结果
labels = clustering.labels_
print(labels)
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的步骤如下:

  1. 随机选择一个未访问的数据点。
  2. 如果该数据点的邻域内包含足够数量的数据点,则创建一个新簇,并将该点及其邻域内的点添加到簇中。
  3. 重复步骤2,直到所有的数据点都被访问过。
  4. 如果存在未分配到任何簇的点,则将其标记为噪声。

下面是使用Python实现DBSCAN的示例代码:

from sklearn.cluster import DBSCAN
import numpy as np

# 生成随机数据
np.random.seed(0)
X = np.random.randn(100, 2)

# 聚类
dbscan = DBSCAN(eps=0.3, min_samples=5)
dbscan.fit(X)

# 输出聚类结果
labels = dbscan.labels_
print(labels)
Python

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册