8个知识点,图解K-Means算法

本文详细介绍了K-Means算法,包括算法思想、步骤、优缺点,以及Python实现。K-Means是一种无监督学习的聚类算法,通过迭代寻找数据的最佳分组。文章还探讨了k值选择、距离计算和算法的优化版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来源:Python数据之道

作者:Peter

整理:Lemon

8个知识点,图解K-Means算法

之前,公众号分享了关于 KNN算法 的介绍,今天,我们来学习下另一个经典的算法:K-means算法

本文中介绍的是一种常见的无监督学习算法,名字叫做 K 均值算法:K-Means算法

K-Means算法在无监督学习,尤其是聚类算法中是最为基础和重要的一个算法。它实现起来非常简单。聚类效果也很不错的,因此应用非常广泛。

本文将会从以下 8 个方面进行详细的讲解:

算法思想

无监督学习

在正式介绍 K-Means 算法之前,我们先解释一下无监督学习。用一句很通俗的话来解释:

是否有监督(supervised),我们只需要看输入的数据是否有标签

输入的数据如果带有标签,则是有监督学习,比如 KNN算法(K近邻)就是监督学习的典型算法;如果没有标签,则认为是无监督学习,比如本文中即将介绍的 K-Means算法

我们看看无监督学习聚类算法的应用:

  • 市场分割

  • 社交网络分析

  • 组织计算机集群

  • 星系的形成

算法思想

K-Means 聚类算法是一种迭代求解的聚类分析算法。算法思想是:我们需要随机选择 K 个对象作为初始的聚类中心,然后计算每个对象和各个聚类中心之间的距离,然后将每个对象分配给距离它最近的聚类中心。

聚类中心及分配给它们的对象就代表着一个聚类。每分配一个样本,聚类的中心会根据聚类中现有的对象被重新计算。此过程将不断重复,直至满足设置的终止条件。

算法步骤

K-Means 算法的具体步骤如下:

  1. 首先我们需要确定一个k值(随机),即我们希望数据经过聚类得到k个不同的集合;

  2. 从给定的数据集中随机选择K个数据点作为质心

  3. 对数据集中的每个点计算其与每一个质心的距离(比如欧式距离);数据点离哪个质心近,就划分到那个质心所属的集合

  4. 第一轮将所有的数据归号集合后,一共有K个集合,然后重新计算每个集合的质心

  5. 如果新计算出来的质心和原来的质心之间的距离小于某一个设置的阈值,则表示重新计算的质心的位置变化不大,数据整体趋于稳定,或者说数据已经收敛。在这样的情况下,我们认为聚类效果已经达到了期望的结果,算法可终止;

  6. 反之,如果新质心和原来质心的距离变化很大,需要重复迭代3-5步骤,直至位置变化不大,达到收敛状态。

图解K-Means

具体步骤

1、给定需要进行聚类划分的数据集

2、随机选择2个聚类中心(K=2)

3、计算每个数据点到质心的距离,并将数据点划分到离它最近的质心的类中

4、计算2个数据集的各自的质心(红点、蓝点的均值),将聚类中心移动到均值处,变成新的聚类中心

img

5、找到新的聚类中心。如果

完整过程

  1. 在上面的过程中我们假设k=2。在图b中我们随机选择了两个类所对应的质心,也就是图中蓝色和红色质心;

  2. 分别求出样本中每个点到这两个质心的距离,并且将每个样本所属的类别归到和该样本距离最小的质心的类别,得到图c,也就是第一轮迭代后的结果;

  3. 我们对c图中的当前标记为红色和蓝色的点分别求出其新的质心,得到了图d,此时质心的位置发生了改变;

  4. 图e和图f重复了图c和图d的过程,即将所有点的类别标记为距离最近的质心的类别并求新的质心;

  5. 一般的,K-Means算法需要运行多次才能达到图f的效果。

注:以上图形来自吴恩达老师在机器学习视频的讲解截图

k值选择

k值决定了我们将数据划分成多少个簇类。k个初始化的质心的位置选择对最后的聚类结果和整个大代码的运行时间都有非常大的影响。因此需要选择合适的k个质心

一般k

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值