SciPy 聚类

17 Mar 2025 | 阅读 2 分钟

聚类是将数据集划分为由相似数据点组成的组的过程。 例如,商品在购物中心内排列。 同一组中的数据点必须尽可能相同,并且应该与其他组不同。 有两种类型的集群,分别是

  • Central (中央)
  • 层级结构

K-均值聚类算法是一种简单的无监督算法,用于预测未标记数据集中的分组。 预测基于存在的聚类中心数量(k)和最近的平均值(以观测值之间的欧几里得距离衡量)。

SciPy Cluster

K-均值算法

步骤如下,假设我们有输入 x1,x2, x3,....xn 数据和值 K。

步骤 - 1

选择 K 个随机点作为聚类中心,称为质心。 假设这些是 c1,c2,...ck, 它可以写成如下形式

c1,c2,...ck

C 是所有质心的集合。

步骤 2

通过计算点和每个质心之间的欧几里得(L2)距离,将每个输入值 xi 分配到最近的中心。

步骤 3

在此步骤中,我们通过计算分配给该群集的所有点的平均值来获得新的质心。

步骤 4

我们重复步骤 2 和 3,直到没有群集保持不稳定。

K-均值聚类和向量量化 (scipy.cluster.vq)

SciPy 提供了用于 K-均值聚类、从 k-均值模型生成代码簿以及通过将向量与代码簿中的质心进行比较来量化向量的函数。

函数描述
scipy.cluster.vq.whiten(obs, check_finite=True )它标准化特征上的一组观察值。
scipy.cluster.vq.vq(obs, code_book,check_finite=True)它将代码簿中的代码分配给观察值。
scipy.cluster.vq.kmeans(obs, k_or_guess, iter=20, thresh=1e-05, check_finite=True)它在一组形成 k 个聚类的观测向量上执行 k-均值。
scipy.cluster.vq.kmeans2(data,k,iter=10, thresh=1e-05, minit='random', missing='warn', check_finite=True)它使用 k-means 算法将一组观察值分类为 k 个聚类。

SciPy 中 K-均值的实现

在这里,我们将了解 SciPy 中 K-均值的实现

导入 K-means

以下语句用于实现 K-means 算法

计算具有三个群集的 K-means

K-means 算法一遍又一遍地迭代并调整质心,直到必要的进度无法改变失真,因为上次迭代小于某个阈值。 考虑以下示例

输出

[[1.97955982 1.78985952 1.51775359]
 [2.6926236  2.70116313 2.75279787]
 [0.84636826 0.93081751 1.0708057 ]]

下一个主题SciPy 常量