K-means聚类算法

1.概述

K-means算法是最为经典的基于划分的聚类算法,基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类,通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。

K-means算法接受参数k,然后将事先输入的n个数据对象划分为k个聚类以便使得所获得的聚类满足同一聚类的对象相似度较高,而不同聚类中的对象相似度较小。聚类相似度是利用各个聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的

2.实现原理

基本思想是初始随机给定k个簇中心,按照最近邻原则把待分类样本点分到各个簇。然后按平均法重新计算各个簇的质心。一直迭代,直到簇心的移动距离小于某个给定的值。

步骤:

  1. 为待聚类的点寻找聚类中心
  2. 计算每个点到聚类中心的距离,将每个点聚类到离该点最近的聚类中去
  3. 计算每个聚类中所有点的坐标平均值,并将这个平均值作为新的聚类中心
  4. 反复执行(2)(3)直到聚类中心不再进行大范围移动或聚类次数达到要求为止

3.使用该算法需要考虑的问题

  1. K值的选取:
  1. 实际情况:衣服大小(s,m,l)
  2. 肘部法则
  1. 初始聚类中心的选取:

多次尝试随机初始化不同的初始聚类中心,然后选取具有最小SSE(误差平方和)的一组。

  1. 距离的度量(评价个体间差异大小)
  1. 欧几里得距离:受到指标不同单位刻度的影响,一般需要先进行标准化。距离越大,个体间的差异性越大。
  2. 余弦距离:不受指标刻度的影响,取值落在[-1,1],值越大,差异越小。值为零是正交无关。
  1. 聚类中心:簇到中心的距离的均值
  2. 算法停止条件:
  1. 目标函数达到最优:目标函数(欧氏距离,余弦距离)
  2. 达到最大迭代次数

4.K-means最佳实践

(1)随机选取训练数据中的k个点作为起始点

(2)选定k值后,随机计算n次,取得误差函数值最小的k作为最终聚类结果

(3)肘部法则选取k值

5.K-means++算法

基本思想是:初始的聚类点之间的相互距离要尽可能地远,解决K-Means算法对初始簇心比较敏感的问题

步骤:

  1. 从输入的数据点集合中随机选取一个点作为第一个聚类中心
  2. 对于数据集中的每一个点x,计算他与最近聚类中心(指已选择的聚类中心)的距离D(x)
  3. 选择一个新的数据点作为新的聚类中心,选取的原则是:D(X)

较大的点,被选作聚类中心的概率较大

  1. 重复(2)(3)直到k个聚类中心被选出来
  2. 利用这个结果来运行标准K-means算法

Kmeans函数:

  1. 参数

n_clusters: 即k值,一般需要多试一些值以获得较好的聚类效果。

max_iter 最大的迭代次数,一般如果是凸数据集的话可以不管这个值,如果数据集不是凸的,可能很难收敛,此时可以指定最大的迭代次数让算法可以及时退出循环。

n_init用不同的初始化质心运行算法的次数。由于K-Means是结果受初始值影响的局部最优的迭代算法,因此需要多跑几次以选择一个较好的聚类效果,默认是10,一般不需要改。如果你的k值较大,则可以适当增大这个值。

init 即初始值选择的方式,可以为完全随机选择’random’,优化过的’k-means++’(初始聚类中心离散)或者自己指定初始化的k个质心。一般建议使用默认的’k-means++’。

algorithm:有“auto”, “full” or “elkan”三种选择。”full”就是我们传统的K-Means算法, “elkan”是elkan K-Means算法。默认的”auto”则会根据数据值是否是稀疏的,来决定如何选择”full”和“elkan”。一般数据是稠密的,那么就是 “elkan”,否则就是”full”。一般来说建议直接用默认的”auto”

random_state:表示产生随机数的方法。默认情况下的缺省值为None,此时的随机数产生器是np.random所使用的RandomState实例。

  1. 属性

label_:每个样本对应的簇类别标签

cluster_centers_:聚类中心

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值