首页  >  文章  >  后端开发  >  Python中的聚类分析实例

Python中的聚类分析实例

王林
王林原创
2023-06-10 12:30:073055浏览

聚类分析是一种常用的数据分析方法,可以将数据集划分为不同的组或类别。Python 提供了多种聚类算法,我们可以根据不同的需求选择不同的算法进行分析。本文将介绍一些 Python 中常用的聚类算法,并给出实例应用。

一、K-Means 算法

K-Means 算法是一个常用的聚类算法,根据欧几里得距离对数据进行分组。该算法将数据集分为 k 个簇,其中每个簇的中心点是簇中所有成员的均值。算法的具体步骤如下:

  1. 随机选择 k 个点作为初始的簇中心。
  2. 计算所有数据点与簇中心的距离,并将每个数据点归为距离最近的簇。
  3. 根据新的归类结果,重新计算每个簇的中心点。
  4. 重复第 2 步和第 3 步,直到簇不再发生变化或者达到指定的迭代次数。

下面是一个使用 K-Means 算法进行聚类分析的 Python 实例:

import numpy as np
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt

# 生成随机数据
X, y = make_blobs(n_samples=300, centers=4, random_state=42)

# 运行 K-Means 算法
kmeans = KMeans(n_clusters=4, random_state=42)
y_pred = kmeans.fit_predict(X)

# 绘制聚类结果
plt.scatter(X[:, 0], X[:, 1], c=y_pred)
plt.title("K-Means Clustering")
plt.show()

上述代码中,使用 make_blobs 函数生成了一个包含 300 个样本点的数据集,共包含 4 个簇。然后使用 KMeans 函数进行聚类,指定簇的数量为 4,并通过 fit_predict 方法得到每个数据点的分类结果。最后使用 Matplotlib 绘制聚类结果。

二、层次聚类算法

层次聚类算法是一种自底向上的聚类算法,根据数据的相似度,将数据逐步合并为更大的簇。该算法的具体步骤如下:

  1. 将每个数据点看作一个单独的簇。
  2. 计算两个距离最近的簇之间的距离。
  3. 将距离最近的两个簇合并为一个新簇。
  4. 重复第 2 步和第 3 步,直到将所有簇合并为一个簇或者达到指定的聚类数量。

下面是一个使用层次聚类算法进行聚类分析的 Python 实例:

from sklearn.cluster import AgglomerativeClustering
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt

# 生成随机数据
X, y = make_moons(n_samples=200, noise=0.05, random_state=42)

# 运行层次聚类算法
agglomerative = AgglomerativeClustering(n_clusters=2)
y_pred = agglomerative.fit_predict(X)

# 绘制聚类结果
plt.scatter(X[:, 0], X[:, 1], c=y_pred)
plt.title("Agglomerative Clustering")
plt.show()

上述代码中,使用 make_moons 函数生成了一个包含 200 个样本点的数据集,并使用 AgglomerativeClustering 函数进行聚类,指定簇的数量为 2。最后使用 Matplotlib 绘制聚类结果。

三、DBSCAN 算法

DBSCAN 算法是一种基于密度的聚类算法,可以根据数据集的密度将数据点分为不同的簇。算法的具体步骤如下:

  1. 随机选择一个未访问的数据点作为核心点。
  2. 找出与核心点距离不超过给定半径的所有点,作为一个以该核心点为中心的密度可达区域。
  3. 如果一个点在另一个核心点的密度可达区域内,则将其和该核心点合并为一个簇。
  4. 重复第 1 步到第 3 步,直到没有新的核心点被访问。

下面是一个使用 DBSCAN 算法进行聚类分析的 Python 实例:

from sklearn.cluster import DBSCAN
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt

# 生成随机数据
X, y = make_moons(n_samples=200, noise=0.05, random_state=42)

# 运行 DBSCAN 算法
dbscan = DBSCAN(eps=0.2, min_samples=5)
y_pred = dbscan.fit_predict(X)

# 绘制聚类结果
plt.scatter(X[:, 0], X[:, 1], c=y_pred)
plt.title("DBSCAN Clustering")
plt.show()

上述代码中,使用 make_moons 函数生成了一个包含 200 个样本点的数据集,并使用 DBSCAN 函数进行聚类,指定了半径和最小样本数的阈值。最后使用 Matplotlib 绘制聚类结果。

总结

本文介绍了 Python 中的三种常用聚类算法,并给出了相应的实例应用。聚类算法是一种十分有用的数据分析方法,可以帮助我们发现数据中的隐藏模式和关系。在实际应用中,我们可以根据数据的特点和需求选择不同的算法进行分析。

以上是Python中的聚类分析实例的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn