聚类是将数据集划分为包含相似数据点的组的过程。例如,购物商场中的物品是如何排列的。同一组中的数据点应尽可能相同,并且应与其他组不同。有两种类型的聚类,分别是:

  • 中心型
  • 层次型

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

4-1.png

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-均值算法将一组观测值分类为 k 个聚类。

SciPy 中的 K-均值实现

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

导入 K-均值

使用以下语句实现 K-均值算法:

from SciPy.cluster.vq import kmeans,vq,white  

计算三个聚类的 K-均值

K-均值算法反复迭代,调整质心,直到无法在失真方面进行必要的进展,因为自上次迭代以来的变化小于某个阈值。考虑以下示例:

from numpy import vstack,array  
from numpy.random import rand  
from scipy.cluster.vq import kmeans,vq,whiten  
# data generation with three features  
data1 = vstack((rand(100,3) + array([.5,.5,.5]),rand(100,3)))  
# whitening of data  
data1 = whiten(data)  
# computing K-Means with clusters   
centroids,_ = kmeans(data1,3)  
print(centroids)  

输出:

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

标签: Scipy, Scipy学习, Scipy教程, Scipy下载, Scipy指南, Scipy基础教程, Scipy使用指南, Scipy库, Scipy入门, Scipy进阶, Scipy模块, Scipy安装教程