Scipy 教程-SciPy 聚类
中心型
层次型
K-均值算法
步骤如下,假设我们有输入 x1, x2, x3,....xn 数据和 K 值。
步骤 - 1:
c1,c2,...ck
C 是所有质心的集合。
步骤-2:
通过计算其欧几里得(L2)距离,将每个输入值 xi 分配给最近的中心。
步骤-3:
在这一步中,我们通过计算分配给该聚类的所有点的平均值来获得新的质心。
步骤-4:
重复步骤 2 和 3,直到没有任何聚类保持不稳定。
👉点击领取:最全Python资料合集
K-均值聚类和向量量化 (scipy.cluster.vq)
| 函数 | 描述 |
|---|---|
| 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-均值
from SciPy.cluster.vq import kmeans,vq,white
计算三个聚类的 K-均值
K-均值算法反复迭代,调整质心,直到无法在失真方面进行必要的进展,因为自上次迭代以来的变化小于某个阈值。考虑以下示例:
from numpy import vstack,arrayfrom numpy.random import randfrom scipy.cluster.vq import kmeans,vq,whiten# data generation with three featuresdata1 = vstack((rand(100,3) + array([.5,.5,.5]),rand(100,3)))# whitening of datadata1 = whiten(data)# computing K-Means with clusterscentroids,_ = kmeans(data1,3)print(centroids)
[[1.97955982 1.78985952 1.51775359][2.6926236 2.70116313 2.75279787][0.84636826 0.93081751 1.0708057 ]]
热门推荐