K-means学习理解

最近在学习K-means算法,在GitHub上找了一个源代码自己敲看看。
引用别人的话来解释K-means的思想:

K-means是一种将输入数据划分成k个簇的聚类算法。K-means反复提炼
初始评估的类的中心,步骤如下:
 - 以随机或猜想的方式初始化类中心Ui:i= 1....K
 - 将所有的数据点归并到离它距离最近的类中心所属的类ci
 - 对所有属于该类的数据点求平均,将平均值作为新的类中心
 - 重复步骤23直到收敛(判断依据是中心点变化的差值大小)

对于算法的实现,是我们建立一个聚类算法对象,我们需要不断的用到2,3步骤的操作,可以将其写成一个方法,来供我们一直调用。

  • 步骤2可以写一个assign_to_cluster()函数
  • 步骤3可以写一个compute_mean()函数
  • 除此之外,我们还得对步骤1进行实现,可以由一个函数initial_means()完成,但是要生成K个随机点中心,我们可以再用一个next_mean_center()函数来生成一个中心点
  • 这样我们就需要四个函数,完成数据处理,但是我们需要一个类似主函数的方法,来实现整个流程的控制。
  • 展示数据方面,我们也需要对聚类对象的数据进行打印,如打印其中心点集合print_mean()还有打印各个类的元素的函数print_clusters()

最后附上github上的源码:github源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值