算法简介
K-Means是一种常用的聚类算法。聚类在机器学习分类中属于无监督学习,在数据集没有标注的情况下,便于对数据进行分群。而K-Means中的K即指将数据集分成K个子集合。
K-Means演示
从以下的动画、视频和计算过程可以较为直观了解算法的计算过程。
动画展示
视频展示
在线展示
使用场景
由于简单和低维度下高效的特性,K-Means算法被应用在人群分类,图像分段,文本分类以及数据挖掘前数据预处理场景中。
算法理解
计算流程
一下使用$$分隔的内容为LaTeX编码的数学表达式,请自行解析。
假设有n个点$$x_{1}$$, $$x_{2}$$, $$x_{3}$$, ..., $$x_{n}$$ 以及子集数量K。
步骤1 取出K个随机向量作为中心点用于初始化
$$C = c_{1},c_{2},...,c_{k}$$
步骤2 计算每个点$$x_{n}$$与K个中心点的距离,然后将每个点聚集到与之最近的中心点
$$\min_{c_{i} \in C} dist(c_{i},x)$$
dist函数用于实现欧式距离计算。
步骤3 新的聚集出来之后,计算每个聚集的新中心点
$$c_{i} = avg(\sum_{x_{i} \in S_{i}} x_{i})?$$
Si表示归属于第i个中心点的数据。
步骤4 迭代步骤2和步骤3&