K-means之C++及OpenCV实现

本文介绍了K-means算法的步骤,并提供了C++和OpenCV实现的概述。通过随机选取样本点作为聚类中心,计算样本与中心的距离进行聚类,不断更新并检查聚类中心的变化,直至满足停止条件。程序可视化了聚类过程,展示出算法的运行效果。然而,K-means算法存在K值选择依赖经验和初始中心选择影响结果的问题。
摘要由CSDN通过智能技术生成

K-means算法算是个著名的聚类算法了,不仅容易实现,并且效果也不错,训练过程不需人工干预,实乃模式识别等领域的居家必备良品啊,今天就拿这个算法练练手。


总结来说,这个算法的步骤如下:

1.随机选取样本中的K个点作为聚类中心
2.计算所有样本到各个聚类中心的距离,将每个样本规划在最近的聚类中
3.计算每个聚类中所有样本的中心,并将新的中心代替原来的中心
4.检查新老聚类中心的距离,如果距离超过规定的阈值,则重复2-4,直到小于阈值


那么,现在,我实现的程序的步骤也是按照上面一步一步来的,

为了方便,我直接在平面上随机产生n个点,选取前K个点作为聚类中心,

距离就定义为平面上的欧式距离,

然后为了形象化地观察过程和结果,我将过程以图像的方式显示。


代码如下:


首先是主体:

int iter_times = 0;//迭代次数
    while(!good_result())//检查是否是需要的聚类中心
    {
        for(int i = 0;i < POINT_NUM;i++)
 
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值