开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 13505|回复: 131
收起左侧

[易语言纯源码] 【精易首发】【k-means】【聚类】【非监督学习】【算法】

  [复制链接]

结帖率:100% (44/44)
发表于 2022-8-10 22:47:29 | 显示全部楼层 |阅读模式   广东省东莞市
分享源码
界面截图: -
是否带模块: -
备注说明: -
闲着没事花了点时间写了个【k-means】聚类算法演示(示例),论坛上好像没有,分享一下

什么是聚类?

说到聚类,应先理解聚类和分类的区别,很多业务人员在日常分析时候不是很严谨,混为一谈,其实二者有本质的区别。

分类:分类其实是从特定的数据中挖掘模式,作出判断的过程。比如Gmail邮箱里有垃圾邮件分类器,一开始的时候可能什么都不过滤,在日常使用过程中,我人工对于每一封邮件点选“垃圾”或“不是垃圾”,过一段时间,Gmail就体现出一定的智能,能够自动过滤掉一些垃圾邮件了。这是因为在点选的过程中,其实是给每一条邮件打了一个“标签”,这个标签只有两个值,要么是“垃圾”,要么“不是垃圾”,Gmail就会不断研究哪些特点的邮件是垃圾,哪些特点的不是垃圾,形成一些判别的模式,这样当一封信的邮件到来,就可以自动把邮件分到“垃圾”和“不是垃圾”这两个我们人工设定的分类的其中一个。

聚类:聚类的目的也是把数据分类,但是事先我是不知道如何去分的,完全是算法自己来判断各条数据之间的相似性,相似的就放在一起。在聚类的结论出来之前,我完全不知道每一类有什么特点,一定要根据聚类的结果通过人的经验来分析,看看聚成的这一类大概有什么特点。

聚类和分类最大的不同在于:分类的目标是事先已知的,而聚类则不一样,聚类事先不知道目标变量是什么,类别没有像分类那样被预先定义出来。


K-Means

聚类算法有很多种(几十种),K-Means是聚类算法中的最常用的一种,算法最大的特点是简单,好理解,运算速度快,但是只能应用于连续型的数据,并且一定要在聚类前需要手工指定要分成几类。

下面,我们描述一下K-means算法的过程,为了尽量不用数学符号,所以描述的不是很严谨,大概就是这个意思,“物以类聚、人以群分”:

  • 首先输入k的值,即我们希望将数据集经过聚类得到k个分组。
  • 从数据集中随机选择k个数据点作为初始大哥(质心,Centroid)
  • 对集合中每一个小弟,计算与每一个大哥的距离(距离的含义后面会讲),离哪个大哥距离近,就跟定哪个大哥。
  • 这时每一个大哥手下都聚集了一票小弟,这时候召开人民代表大会,每一群选出新的大哥(其实是通过算法选出新的质心)。
  • 如果新大哥和老大哥之间的距离小于某一个设置的阈值(表示重新计算的质心的位置变化不大,趋于稳定,或者说收敛),可以认为我们进行的聚类已经达到期望的结果,算法终止。
  • 如果新大哥和老大哥距离变化很大,需要迭代3~5步骤。

程序演示:
随机生成点集,并自动聚合。

先看效果图
demo.gif


k-means.e (19.54 KB, 下载次数: 115)

点评

请下载最新源码https://share.weiyun.com/gBXd2FHe   广东省东莞市  发表于 2022-8-11 12:02

评分

参与人数 11好评 +11 精币 +25 收起 理由
Suky + 1 + 2 感谢分享,很给力!~
小白弟弟 + 1 + 2 新技能已get√
易语言资源网 + 1 + 3 开源精神必须支持~
鼠标疯了 + 1 + 2 新技能已get√
dangerace + 1 新技能已get√
ppppzj + 1 + 2 大神,请收下我的膝盖。完全不懂是撒意思
1051496412 + 1 + 2 感谢分享,很给力!~
qq40962060 + 1 + 2 好牛逼啊,表示 看不懂。1.。。。。。
冰点 + 1 + 5 感谢分享,很给力!~
外星人群控 + 1 + 3 感谢分享,很给力!~
airaz + 1 + 2 支持开源~!感谢分享

查看全部评分


本帖被以下淘专辑推荐:

结帖率:100% (44/44)

签到天数: 25 天

 楼主| 发表于 2022-8-11 12:02:32 | 显示全部楼层   广东省东莞市
优化演示,请下载最新源码1.1
https://share.weiyun.com/gBXd2FHe

点评

这个算法用处很大, 希望大神能出更多的其它算法.   广东省东莞市  发表于 2023-6-21 11:25
优化显示,新增点信息,将鼠标靠近点可查看。   广东省东莞市  发表于 2022-8-11 12:04
回复 支持 反对

使用道具 举报

签到天数: 8 天

发表于 2023-9-25 07:56:00 | 显示全部楼层   四川省巴中市
        感谢分享,很给力!~
回复 支持 反对

使用道具 举报

签到天数: 2 天

发表于 2023-8-4 07:30:47 | 显示全部楼层   浙江省杭州市

++

感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:67% (2/3)

签到天数: 24 天

发表于 2023-7-29 00:44:38 | 显示全部楼层   贵州省黔西南布依族苗族自治州
可以举个应用例子么?哪里能用得到啊?
回复 支持 反对

使用道具 举报

签到天数: 2 天

发表于 2023-7-19 07:30:04 | 显示全部楼层   浙江省杭州市

++

感谢分享,很给力!~
回复 支持 反对

使用道具 举报

发表于 2023-7-13 17:49:35 | 显示全部楼层   广东省东莞市
谢谢大佬
回复 支持 反对

使用道具 举报

结帖率:82% (9/11)

签到天数: 9 天

发表于 2023-6-23 12:12:38 | 显示全部楼层   湖北省武汉市
谢谢分享  
回复 支持 反对

使用道具 举报

签到天数: 21 天

发表于 2023-6-17 11:15:46 | 显示全部楼层   广东省佛山市
易语言+算法是不错
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 21 天

发表于 2023-6-10 00:55:47 | 显示全部楼层   广东省深圳市
这个不错!!!!!
回复 支持 反对

使用道具 举报

结帖率:9% (1/11)

签到天数: 7 天

发表于 2023-6-1 08:00:19 | 显示全部楼层   河南省新乡市
这个很像邻近K的算法呀 犀利
回复 支持 反对

使用道具 举报

结帖率:94% (17/18)
发表于 2023-5-25 14:18:32 | 显示全部楼层   福建省莆田市
这个库确实帮助了很多人,现在又开源了,值得点赞!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表