Kmeans++ 算法对随机数据样本聚类

一、算法简介

K-means算法是一种常见的无监督学习聚类算法,其基本思想是将n个样本划分为k个簇,每个簇内的样本之间的相似度要尽可能的大,而不同簇之间的相似度要尽可能的小,通过最小化各个簇内点与该簇中心点的距离和来实现

二、具体算法流程

Kmeans:
1. 初始化: 随机选取k个点作为簇中心;

2. 计算距离: 根据选取的距离度量方式(通常为欧氏距离)计算每个样本到k个中心的距离;

3. 分配样本点: 将每个样本点划分为距离最近的簇;

4. 计算簇中心: 对于每个簇,重新计算该簇所有样本的均值,将该均值作为新的簇中心;

5. 迭代: 重复执行步骤2到步骤4,直到簇中心不再发生变化或者达到预设的迭代次数。

最小化约束函数为:找到一个质心使得簇内差的平方和最小,也即是最小化各个簇内点与该簇中心点的距离和。

Kmeans++具有的不同点是:

Kmeans ++算法是一种优化的初始质心选择方法,能够避免初始质心过于集中导致聚类结果出现局部最优解的问题

具体计算步骤:

1. 随机选择一个样本点作为第一个质心。

2. 计算每个样本点到已选质心的距离,并以概率(距离越远的点概率越大)选取下一个质心。

3. 重复2步骤,直至选取出k个质心。

4. 运用普通的Kmeans算法进行聚类。
 

三、K-means算法优缺点

优点:

  1. 速度较快
  2. 调节参数少,簇的个数K

缺点:

1)对于非凸形状的簇难以处理,(以及拉长形状或不规则形状

2)且结果易受到初始点的影响。因此,通常需要进行多次实验,并选取最优结果。

3)算法迭代得到的结果为局部最优(Kmean++算法有一定改善)

4)  数据类别不平衡则聚类效果不佳

5)  对噪声和异常点较敏感

四、对随机数据样本聚类及分析

 

 参考文献

【1】 https://www.cnblogs.com/pinard/p/6164214.html

【2】 sklearn.cluster.kmeans_plusplus — scikit-learn 1.2.2 documentation

猜你喜欢

转载自blog.csdn.net/heda3/article/details/130549750