人工智能 Kmeans算法实现

引言

聚类算法中,Kmeans 算法是入门级的算法,对其本身的而理解,参考论坛中很多博文,这里仅作推荐,K-Means(聚类),还有这个:深入理解K-Means聚类算法,个人认为讲的都挺好的,大家请自行参考

原理

大概过一下原理(仅为个人的理解和阐述,不喜勿碰),后期的编程过程也是以此为准进行编程:
1、首先输入k的值,即我们希望将数据集经过聚类得到k个分组,同时还有迭代次数,作为另一终止条件。
2、从数据集中随机选择k个数据点作为初始点
3、对集合中每一个点,计算与每一个初始点的距离(欧氏距离),离哪个初始点距离近,就跟定哪个初始点。
4、这个过程之后,每一个初始点都有了以自己为索引的分类集合,下一步,针对每一个分类集合重新计算该集合中所有点的X方向和Y方向的平均值meanX和meanY,获得这个新的点(meanX,meanY)也就是针对本集合新选出的索引目标。
5、重新计算数据点的每一个点对新的索引点之间的距离,并判断该距离是否小于设定阈值,若小于,则将此点到(meanX,meanY)点的距离作为新的阈值计算后面的点与(meanX,meanY)之间的距离,最后将到(meanX,meanY)点的距离最小的点认为是新的索引点。
6、重复以上过程,直到达到设定的迭代次数。

软件实现过程

实现效果

界面如下:

在界面中随机给出数据点,根据Kmeans的原理,在给出数据点的时候,刻意的使其有3个明显的集合。随后点击学习按钮,依据Kmeans算法自动对数据点做分类
在这里插入图片描述

基本的实现过程

1、界面的设计和实现

这里界面的设计参看之前的博文,C#图像处理程序实现–PCA(低维)算法笔记整理,这里不再过多的论述。此外,如何获取当前的数据点并存储,也请参考之前的博文,线性分类器——点集样本分类,亦或者参看附件代码。

2、随机寻找K个初始点

同时以这K个初始点为索引,将剩下点存入相应的分类集合
在这里插入图片描述

3、重新计算索引点的过程

在这里插入图片描述
这里要注意,生成新的索引点后,要以新的索引点重新生成新的集合,此过程参考上一步

4、界面显示实现

这里注意在实现过程中,为了直观显示最终生成的数据集合分别以哪个点为索引的过程,在软件实现过程中,这里做了一点软件实现过程中的技巧,具体的参见如见代码。

至此,整个过程就是实现了。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值