K-Means集群算法
来源:互联网 发布:网上的淘宝刷手可靠吗 编辑:程序博客网 时间:2024/05/19 00:37
例如,党我们拿到学生成绩表时,我们可以把成绩分数划分为优(90分左右)、良(80分左右)、中(70分左右)、差(60分及以下)。
再例如对于工人工资表,我们也可以把工人按照工资划分成一定数量的集群,每个集群一定是围绕某个工资水平的。
甚至我们可以抓取所有微信公众文章,将文章标题映射为向量表示(假设没有那些标题党文章的话),我们就可以对这些文章按标题进行集群分类。
我们还可以使用集群算法来对图像进行重新分配颜色,例如有一张灰度图,图像是由像素点构成,我们希望只用5种颜色来对像素点进行重构,将原始像素点划分成5个集群,然后对5个集群分别涂上5种不同的颜色,那么我们可以是用5-Means方法来做这件事,效果如下图所示(左边为原始图像,右边为使用5-Means重新染色的图像):
值得注意的是,集群算法既然是一种无监督学习,那么就没有绝对正确的集群算法,只能是一步一步使得集群划分更加优化。
K-Means集群算法(以下简称K-Means)是一种无监督机器学习算法,顾名思义,它使用K个集群对数据集进行分类,K的大小通常需要预先设定好,然后就可以靠距离中心点(Means)的远近来实现分类。
假设现有一个点集S,需要划分成S_1,S_2,...,S_K,那么使用K-Means的流程如下:
(1)设定好K的大小,随机选取K个点作为初始中心点;
(2)计算每个点到这K个中心点的距离大小,选取最近的中心点,划分到以该中心点为中心的集群中去;
(3)重新计算K个新集群的中心点;
(4)如果中心点保持不变,则结束K-Means过程。否则,重复进行(2)、(3)步;
K-Means的算法过程的确很简单,前文我们说过K要预先设定,但是实际中可能K需要不停去trials-and-errors才能确定最优的K,那么对于一个特定问题,如何找到最优的K呢?
通常,提到最优这个词必须得有个标准,这里也是一样,确定最优K的标准就是判断集群中每个点到集群中心的距离平方,距离平方越小,说明我们的集群划分越密集,即更符合集群的固有属性。
因此,可以设定K从1依次增大,然后判断误差曲线的弯曲程度,我们可以认为误差曲线的拐点处就是K的最优值。K越小,集群划分较少,点不太集中;相反K越大,及集群划分较多,给人一种过拟合的感觉(极端情况是100个点划分成100个集群,听起来似乎已经没有集群的概念了)。
- K-Means集群算法
- Spark集群下的K-Means算法
- K-means算法补充:K-means++
- k-means算法
- K-MEANS算法
- K-MEANS算法
- K-means算法
- k-means算法
- K-Means 算法
- K-Means 算法
- 深入浅出K-Means算法
- 聚类:K-means算法
- K-Means 算法
- k-means 算法
- 深入浅出K-Means算法
- K-Means 算法
- 深入浅出K-means算法
- 深入浅出K-Means算法
- 高德地图 点标注
- 使用Zookeeper对进程间加锁
- POJ
- 通过smtp发送邮件
- 线程池的使用(ThreadPoolExecutor详解)
- K-Means集群算法
- PHP定界符
- spring配置文件ApplicationContext.xml文件里面代码没有提示功能
- C语言中全局变量与静态全局变量区别
- 浅谈比较排序算法中的归并排序算法和快速排序算法
- 用 TensorFlow 做个聊天机器人
- earn the python in hard way习题26~30的附加习题
- pzhu~1084 值班时间
- 转载:浅析海量用户的分布式系统设计