Python技术迷

Scipy 教程-SciPy 聚类

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

  • 层次型

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

Image

K-均值算法

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

步骤 - 1:

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

C 是所有质心的集合。

步骤-2:

通过计算其欧几里得(L2)距离,将每个输入值 xi 分配给最近的中心。

步骤-3:

在这一步中,我们通过计算分配给该聚类的所有点的平均值来获得新的质心。

步骤-4:

重复步骤 2 和 3,直到没有任何聚类保持不稳定。

专属福利 

👉点击领取:最全Python资料合集

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 ]]
Image
 1
Image
热门推荐

Image