Kmeans算法源码分析

来源:互联网 发布:淘宝的发货人能不能改 编辑:程序博客网 时间:2024/06/06 20:10

最近看了下Kmeans算法的源码,层次非常清晰。下面主要是对Kmeans算法中的flags标识的不同的centers生成方法进行梳理。
Kmeans算法中有3中生成centers的算法,分别对应三个flags,KMEANS_RANDOM_CENTERS,KMEANS_PP_CENTERS,KMEANS_USE_INITIAL_LABELS三种。
KMEANS_RANDOM_CENTERS:每个attempts选择随机的初始中心。
KMEANS_PP_CENTERS:用Kmeans++算法
KMEANS_USE_INITIAL_LABELS:第一次attempts用用户提供的labels初始化中心,第二次以及第二次以后的attempts用随机或者半随机中心。
今天主要讲下flags=KMEANS_USE_INITIAL_LABELS时,源码的处理流程。

1)当iter==0时,用用户给定的labels初始化中心,并计算每个中心的样本数。否则,用上一次iter循环后的labels来计算新的中心centers

2)通过第一步统计结果,查找是否有聚类中心的样本数为0,如有,那么找到最大的聚类中心(样本数最多)Max_center;找到Max_center中距离中心点最远的样本;把这个样本点从Max_center中移除,并添加到样本数为0的聚类中心。这样,循环检测每一个聚类中心。生成新的new_centers

3)归一化centers和new_centers,并计算max_center_shift,取max_center_shift为所有聚类中心移动距离的最大值(这个聚类中心的移动距离就是L2距离)
注意:当Iter==0时,max_center_shift为DBL_MAX,这个其实是用户给定的labels初始化聚类中心。

4)计算每个样本值到new_centers的距离,并生成新的labels。然后循环到第一步。

循环终止条件是,当iter达到设定的值或者是当max_center_shift小于给定的精度epsilon时。循环终止,代表一个attempt计算结束。
一个attempt计算基数后,会计算一个compactness,compactness值为所有样本到其距离最近的center的距离之和。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 企业换总经理想换供应商应该怎么办 换了晶振时间还快怎么办 职场两个人都想要你的情况下怎么办 造价起步工资太低又结婚了怎么办 3d保存时写入文件出错怎么办 无经验想在工地承包点小活怎么办 一级建造师挂靠后中标后怎么办 用360对系统修补漏洞很慢怎么办 如果美国和俄罗斯开战中国会怎么办 戴牙冠前临时补牙材料掉了怎么办 设备间在业主家里每次上锁怎么办 成都安全员证原件丢了并过期怎么办 记不施工员证书号了怎么办 优易学车学员版登录不了怎么办 先科移动dvd主板坏了怎么办 离职单位不出劳动解除书怎么办 离职后一级建造师注册证怎么办 京牌货车报废挂靠公司不给办怎么办 二建挂靠注册证书到期了怎么办 二建证书挂靠公司不给钱怎么办 二建拿到证书原单位不解锁怎么办 凯云软件清单锁定只读了怎么办 苹果笔记本鼠标触摸板没反应怎么办 苹果笔记本键盘和触摸板失灵怎么办 苹果手机输入密码显示已停用怎么办 苹果7p手机刷机黑屏了怎么办 苹果5s来电接听屏幕卡顿怎么办? 手机摔了一下触屏失灵怎么办 小米手机摔了一下触屏失灵怎么办 苹果6sp触摸ic坏了怎么办 苹果4s屏幕摔裂了怎么办 新换的手机内屏颜色太亮怎么办 苹果手机摔了一下屏幕失灵怎么办 苹果手机6s屏幕坏了怎么办 苹果6s屏幕摔坏了怎么办 苹果手机屏幕进油了屏幕变暗怎么办 苹果手机不小心屏幕进油了怎么办 苹果6充电插口螺丝口坏了怎么办 苹果5s手机安装屏幕翘边怎么办 苹果手机摔了一下触摸屏失灵怎么办 苹果手机摔了下触摸屏失灵怎么办