五分钟学完k-means

2023-12-21 18:20
文章标签 学完 means 五分钟

本文主要是介绍五分钟学完k-means,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

K-Means 聚类算法的大致意思就是“物以类聚,人以群分”:

算法流程


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

说了这么多,估计还是有点糊涂,下面举个非常形象简单的例子:
有6个点,从图上看应该可以分成两堆,前三个点一堆,后三个点另一堆。现在我手工地把 k-means 计算过程演示一下,同时检验是不是和预期一致:

1.设定 k 值为2

2.选择初始大佬(就选 P1 和 P2)

3.计算小弟与大佬的距离:

从上图可以看出,所有的小弟都离 P2 更近,所以次站队的结果是:

A 组:P1
B 组:P2、P3、P4、P5、P6

4.召开选举大会:

A 组没什么可选的,大佬就是自己
B 组有5个人,需要重新选大佬,这里要注意选大佬的方法是每个人 X 坐标的平均值和 Y 坐标的平均值组成的新的点,为新大佬,也就是说这个大佬是“虚拟的”。因此,B 组选出新大哥的坐标为:P 哥((1+3+8+9+10)/5,(2+1+8+10+7)/5)=(6.2,5.6)。
综合两组,新大哥为 P1(0,0),P哥(6.2,5.6),而P2-P6重新成为小弟。

5.再次计算小弟到大佬的距离:

这时可以看到P2、P3离P1更近,P4、P5、P6离P哥更近,所以第二次站队的结果是:

A 组:P1、P2、P3
B 组:P4、P5、P6(虚拟大哥这时候消失)

6.第二届选举大会:
同样的方法选出新的虚拟大佬:P哥1(1.33,1),P哥2(9,8.33),P1-P6都成为小弟。

7.第三次计算小弟到大佬的距离:

这时可以看到 P1、P2、P3 离 P哥1 更近,P4、P5、P6离 P哥2 更近,所以第二次站队的结果是:
A 组:P1、P2、P3
B 组:P4、P5、P6

我们可以发现,这次站队的结果和上次没有任何变化了,说明已经收敛,聚类结束,聚类结果和我们最开始设想的结果完全一致。

损失函数

其中,1/2是系数。这样做的好处是,当我们对损失函数进行求导时,系数1/2可以抵消掉平方的2,从而得到更简洁的导数表达式,方便迭代优化算法的实现。

通过引入这个系数,不会改变问题的本质,但在数学推导和实际计算中,可以简化一些步骤。

这篇关于五分钟学完k-means的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/521023

相关文章

第L8周:机器学习|K-means聚类算法

本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 | 接辅导、项目定制 🚀 文章来源:K同学的学习圈子深度学习 聚类算法的定义: 聚类就是将一个庞杂数据集中具有相似特征的数据自动归类到一起,称为一个簇,簇内的对象越相似,聚类的效果越好。“相似”这一概念,是利用距离标准来衡量的,我们通过计算对象与对象之间的距离远近来判断它们是否属于同一类别,即是否是同一个簇。 聚类是

每天五分钟玩转深度学习PyTorch:nn.Module中封装好的神经网络层

本文重点 PyTorch实现了神经网络中绝大多数的layer,这些layer都继承于nn.Module,封装了可学习参数parameter,并实现了forward函数,且很多都专门针对GPU运算进行了CuDNN优化,其速度和性能都十分优异。本文介绍pytorch中已经封装好的神经网络层,我们可以直接通过nn.的方式来调用。本文主要学习第2步(模型搭建)。 全连接层 nn.Linear(i

五分钟看完 Linux 重点知识,建议收藏!

点击上方“朱小厮的博客”,选择“设为星标” 后台回复”1024“获取公众号专属1024GB资料 来源:rrd.me/f3v9F 写在前面 我们都知道Linux是一个支持多用户、多任务的系统,这也是它最优秀的特性,即可能同时有很多人都在系统上进行工作,所以千万不要强制关机。 同时,为了保护每个人的隐私和工作环境,针对某一个文档(文件、目录),Linux系统定义了三种身份,分别是拥有者(owner

开放题:如何利用深度学习来重参数化 K-means 聚类,这样的思路要做出效果,它的前向传播、反向传播以及优化目标最好是什么样的?

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 传统的 K-means 算法直接处理数据点与聚类中心。重参数化技术的核心在于利用神经网络来学习一个从输入空间映射到聚类分配的转换函数。深度学习重参数化 K-means 聚类的核心思想在于,将传统 K-means 算法中的硬分配机制转化为可微分的软分配,进而利用神经网络学习并优化特征表示。此方法巧妙融合了

手把手教你怎么撩妹,五分钟读懂!提取于《谈话的力量》

最近撩妹成了一个广受社会青年,尤其是未婚青年们关注的学科。各种理论案例层出不穷。但是,有没有一本像九阴真经一样的撩妹宝典,去指导广大又红又专就是不会说话的热血青年去撩妹撩汉子呢? 有的,这本书就是美国教授艾伦.加纳写的《谈话的力量》 在这本书里,艾伦.加纳虽然讲的是普遍意思上的聊天技巧,但在我看来,完全就是一本撩妹宝典。书中,教授同志提供了十二绝技提高你的撩妹技巧。 第一招:做一个会问问题

算法——K-means算法和算法改进

简介:个人学习分享,如有错误,欢迎批评指正。 一、什么是K-means算法? K-means算法是一种无监督的聚类算法,用于将一组数据点分为K个簇(cluster)。其核心目标是将数据点划分到K个不同的簇中,使得每个簇内的数据点之间的相似性最大化,而不同簇之间的相似性最小化。 具体而言,K-means算法通过以下方式实现聚类: 簇中心(质心):每个簇都有一个中心点,称为质心(cent

基于Python的机器学习系列(19):K均值聚类(K-Means Clustering)

简介         K均值聚类(K-Means Clustering)是一种常用的无监督学习算法,用于将数据样本划分为若干个“簇”,使得同一簇内的数据点彼此相似,而不同簇的数据点之间差异较大。由于K均值不依赖于标签,因此它是一种无监督学习方法。常见的应用包括客户细分、图像分割和数据可视化等。 K均值算法 K均值算法的基本步骤如下: 定义簇的数量 k(需手动设定)。初始化簇的质心,这些质心

每天五分钟计算机视觉:人脸识别网络FaceNet

本文重点 在前面的课程中,为了解决人脸识别的问题,我们学习了Siamese神经网络。本文我们学习另外一种人脸识别网络模型FaceNet。 论文 FaceNet: A Unified Embedding for Face Recognition and Clustering FaceNet概述 FaceNet是谷歌在CVPR 2015上提出的一种深度学习模型,旨在解决人脸识别、验证和

数学建模--K-Means聚类分析

目录 1.聚类分析步骤 1.1简单介绍 1.2两个概念 1.3几种距离 1.4更新质心 1.5终止条件 2.归一化处理 3.肘部法则 4.搭建K-Means分析模型 5.选择最佳K值 6.绘制3D图形 1.聚类分析步骤 1.1简单介绍 K-Means聚类分析是属于聚类分析的一种,这个数据机器学习的算法; 对数据进行自动分组,使得同一组内的数据样本尽可能相似

如何五分钟使用 Cocos Creator 快速部署 TON 游戏(第一部分)

TON 生态在游戏赛道的火热,吸引了大量的开发者涌入其中,但从技术角度看,EVM 兼容性以及开发语言等方面的问题,基于 TON 底层建立游戏应用对于很多开发者而言仍旧存在较高的门槛。而 Zypher Network 作为目前最先进的区块链游戏开发引擎,支持将 Web2 游戏拓展为 dApp ,开发了大量插件,支持开发者基于 CocosCreator 开发的游戏能够快速部署在 Telegram 生态