Kmeans聚类算法实现(输出聚类过程,分布图展示)

Kmeans聚类算法实现(输出聚类过程,分布图展示)

    Kmeans聚类算法是聚类算法中最基础最常用的聚类算法,算法很简单,主要是将距离最近的点聚到一起,不断遍历点与簇中心的距离,并不断修正簇中心的位置与簇中的点集合,通过最近距离和遍历次数来控制输出最终的结果。初始的簇中心、遍历次数、最小距离会影响最终的结果。具体的聚类算法过程不详细讲解,网上资料很多,本文主要是java语言实现,1000个点(本文是二维向量,也可以是多维,实现原理和程序一样),程序运行过程中会输出每一次遍历点的簇中心,和簇中包含的点,并将最终结果通过插件在html中显示。

一、Kmeans聚类算法实现步骤

1、将本地文件读取到点集合中:

2、从点集合中随机选取K个簇中心(也可以采取其他方法获取,后续讲解,初始簇中心的选择会影响最终聚类结果):

3、Kmeans聚类。Kmeans聚类的实现主要是通过遍历所有点与簇中心的距离,不断更换簇中心并将点存入距离最近的簇中,距离的计算公式有多种,常用的是欧几里得距离算法。

二、Kmeans聚类算法实现结果

1、运算过程:

2、分布图:

 

需要源代码的朋友可联系留言。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
OpenCV中的kmeans聚类算法是一种用于将数据集分成K个簇的无监督学习算法。它的主要步骤如下: 首先,通过OpenCV中的随机数生成器RNG,生成一些均匀分布的随机点,这些点的位置对应一副图像中的像素位置。 然后,使用kmeans算法对这些随机点进行分类,并计算出每个类簇的中心点。该算法将数据集中的每个样本点分配到最近的中心点,然后更新中心点的位置,再重复这个过程直到满足终止标准为止。 在OpenCV中,kmeans算法的函数原型如下:kmeans(data, K, bestLabels, criteria, attempts, flags, centers)。其中,data是用于聚类数据,可以是具有浮点坐标的N维点数组;K是用来分割数据集的簇数;bestLabels是输入/输出整数数组,用于存储每个样本的聚类索引;criteria是算法终止标准,包括最大迭代次数和/或所需精度;attempts是用于指定执行算法的次数的标志;flags指定了算法的具体实现方法,可以选择使用随机的初始中心还是使用Arthur和Vassilvitskii进行的中心初始化,或者使用用户提供的标签来进行计算。 通过使用kmeans算法,我们可以将数据集分成具有相似特征的簇,从而实现数据聚类分析。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [OpenCV中使用kmeans算法的方法](https://blog.csdn.net/jpc20144055069/article/details/102763754)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

linge511873822

亲的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值