k-means算法(k-均值聚类算法)是一种基本的已知聚类类别数的划分算法。它是很典型的基于距离的聚类
<https://baike.baidu.com/item/%E8%81%9A%E7%B1%BB>
算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。它是使用欧氏距离度量的(简单理解就是两点间直线距离,欧氏距离只是将这个距离定义更加规范化,扩展到N维而已)。它可以处理大数据集,且高效。它的输入自然是数据集和类别数。聚类结果是划分为k类的k个数据集。根据聚类结果的表达方式又可以分为硬
k-means(HCM)算法、模糊k-means算法(FCM)和概率k-means算法(PCM)。

 

基本思想:

它是基于给定的聚类目标函数,算法采用迭代更新的方法,每一次迭代过程都是向目标函数减小的方向进行,最终聚类结果使得目标函数取得极小值,达到较好的分类效果。

 

原理:

原始的k-means算法首先随机选取k个点作为初始聚类中心,然后计算各个数据对
象到各聚类中心的距离,把数据对象归到离它最近的那个聚类中心所在的类; 调整后的新类计算新的聚类中心,如果相邻两次的聚类中心没有任何变化,说明
数据对象调整结束,聚类准则函数f已经收敛。在每次迭 代中都要考察每个样本的分类是否正确,若不正确,就要调整。在全部数据调整
完后,再修改聚类中心,进入下一次迭代。如果在一次迭代算法中,所有的数据 对象被正确分类,则不会有调整,聚类中心也不会有任何变化,这标志着f已
经收敛,算法结束。其实这跟普通的前馈神经网络使用逆向传播算法训练模型的原理类似,分析误差,修改模型直至达到要求的误差范围。

 

算法框架:

1)给定大小为n的数据集,令O=l,选取k个初始聚类中心 Zj(O),j=1,2,3,...,k,O代表不同迭代轮数的聚类中心

2)计算每个样本数据对象与聚合中心的距离D(xi,Zj(O)),i=1,2,3,…,并分类

3)令O=O+1,计算新的聚类中心

和误差平方和准则f(目标函数)值:



4)判断:若If(O+1)-f(O)I<theta(f收敛)或者对象无类别变化,则算法结束,否则,O=O+1,返回2)步;

流程图:



 

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信