Centroids

首先将明确什么是 centroid 质心 ,如果理解可以直接跳到第二部分。

质心(centroid) ,即质量中心的简称,在物质系统中,被认为是质量集中于此的一个假想点。
举一个简单的案例:如何求三角形的质心?

emgucv求质心 质心如何求_算法


求三角形的质心,首先先找到每个边的中点,即

emgucv求质心 质心如何求_机器学习_02

emgucv求质心 质心如何求_emgucv求质心_03

emgucv求质心 质心如何求_机器学习_04

K-means Clustering

首先,明确 K-means算法 属于机器学习中非监督学习的聚类算法。所以数据集中不会包含任何 标记Label 信息,而是需要按照算法将元素进行分类。

K-means Algorithm 案例

为了理解 K-means 在干啥,举例如下:

目标:坐标系中有30个点,我们想将这30个点分为两类。

emgucv求质心 质心如何求_emgucv求质心_05


首先,我们在坐标中任意取两个点 A,B 作为质心 Centroids

然后,这30个点根据每个点与 A B 的距离进行判断,距离哪个近就归属于哪个部分。

emgucv求质心 质心如何求_emgucv求质心_06


根据距离的判断,我们将这30个点分成了两个部分

emgucv求质心 质心如何求_emgucv求质心_07


然后我们分别计算红色范围内的质心,以及蓝色范围内的质心。更新红色质心和蓝色质心的位置。


emgucv求质心 质心如何求_emgucv求质心_08


然后删除圆圈,计算这更新后的两个质心距离所有点距离的远近,然后再次按照远近重新界定范围值。

emgucv求质心 质心如何求_kmeans_09


重复步骤,再次计算当前两个圈内所有点的质心,然后更新这两个质心的位置到新的位置。

emgucv求质心 质心如何求_机器学习_10


然后再次测量当前两个质点距离所有30个点的距离,然后按照远近再次分类:

emgucv求质心 质心如何求_机器学习_11


然后再次计算圈内所有点的质心,更新 emgucv求质心 质心如何求_kmeans_12emgucv求质心 质心如何求_机器学习_13

emgucv求质心 质心如何求_emgucv求质心_14

再次测量两个质心距离所有30个点分别的距离的时候,发现没有变化,则 K-means 结束,完成任务。


K-means 步骤

步骤一: 根据题目要求分为两个部分,则在坐标系中随意找到两个点。
步骤二: 计算距离,进行分类:
将每个点与 质心A 连线,求其距离,记为 emgucv求质心 质心如何求_emgucv求质心_15
将每个点与 质心B 连线,求其距离,记为 emgucv求质心 质心如何求_算法_16
对于每个点,判断距离哪个质心近,则分配给哪个质心,完成分类。
步骤三: 将分好类的点计算其质心,然后将之前的两个质心分别移动到新的质心的位置上。
步骤四: 重复步骤二,然后执行步骤三,直到执行步骤二时发现所有点的分配没有发生变化,则结束。


【ML31】Advanced K-means 中,将详细阐述 K-means 算法 的详细内容,包含如何选择k值以及python程序实现。