目录

  1. 什么是K-means算法?
  2. 如何寻找K值和质心?
  3. K-means算法流程

1.什么是K-means

K-Means是一种聚类算法,其中K表示类别数,Means表示均值。K-means算法通过预先设定的K值及每个类别的初始质心对相似的数据点进行划分,并通过划分后的均值迭代优化获得最优的聚类结果。K-means算法以欧式距离作为相似度测度。

2.如何寻找K值和质心

K值就是我们希望将数据划分的类别数,K值为几,就要有几个质心。选择最优K值没有固定的公式或方法,需要人工来指定。选择较大的K值可以降低数据的误差,但会增加过拟合的风险。

3.K-means算法流程详解

以下是一组用户的年龄数据,我们将K值定义为2,对用户进行聚类。并随机选择16和22作为两个类别的初始质心。

通过计算所有用户的年龄值与初始质心的距离对用户进行第一次分类,计算距离的方法是使用欧式距离。以下是欧式距离的计算公式。距离值越小表示两个用户间年龄的相似度越高。

通过计算,我们获得了每个年龄数据点与两个初始质心的距离。这里我们以黑色实心圆点标记较大的距离值,空心圆点标记较小的距离值。例如第一个数据点15,到第一个初始质心16的距离为1,到第二个初始质心22的距离为7。相比之下15与16的距离更近,距离值为1,并以空心圆点标记。因此15这个年龄数据点被划分在第一个组(16)中。如果年龄数据点到两个初始质心的距离相等,可以划分到任意组中,例如年龄数据点19,到16和22的距离都为3。在这个示例中我们将数据点19划分到第二个组(22)中

按相似程度(距离)对数据分完组后,分别计算两个分组中数据的均值15.33和36.25,并以这两个均值作为新的质心。在下图中可以看到,蓝色的数字为初始质心,红色的数字为新的质心。目前的质心和新的质心并不是同一个数据点,我们将以新的质心替代初始质心,迭代计算每个数据点到新质心的距离。直到新的质心和原质心相等,算法结束。

将两个分组中数据的均值作为新的质心,并重复之前的方法计算每个年龄数据点到新质心的距离。下面是年龄数据点到两个新质心的距离。以年龄数据点19为例,到新质心15.33的距离为3.67,到另一个新质心36.25的距离为17.25。相比之下数据点19到15.33的距离更近,为3.67。因此被分到第一组(15.33)中。

以年龄数据点到新质心的距离值完成分组后,再次计算两组的均值18.56和45.90,并以均值作为新质心替代原质心。下图中蓝色数字为原质心,红色数字为新质心。在新质心下,年龄数据的分组情况发生了变化,但新质心与原质心没有重合。

重复之前的方法和步骤,计算年龄数据点到新质心的距离。并对比数据点到两个新质心的距离,选择较小的距离值对年龄数据点进行分组。年龄数据点28到18.56的距离为9.44,到45.90的距离为17.90。因此年龄数据点28被分配到第一个18.56的分组中。

再次以年龄数据点到新质心的距离完成分组后,新质心(红色)与原质心(蓝色)仍然没有重合,但与之前相比分组的调整已经很小。我们继续计算新分组的均值19.50和47.89,并将均值作为新质心替代原质心。

开始计算的第一步我们说迭代计算每个数据到新质心的距离,直到新的质心和原质心相等,算法结束。使用上一步分组的均值19.50和47.89作为新质心。并计算年龄数据点到新质心的距离。以下为计算结果。

按照年龄数据点到新质心的距离对数据进行分组,并计算每组的均值作为新质心。这里两组的均值与原质心相等。也就是说新质心与原质心相等,都是19.50和47.89.。算法停止计算。年龄数据点被划分为两类,如下图所示分别为15-28和35-65。

原文地址:https://www.cnblogs.com/zhzhang/p/5437778.html

K-means算法详解相关推荐

  1. 【20210922】【机器/深度学习】KNN (K近邻) 算法详解

    一.算法概念 KNN, K-near neighbor,即最近邻算法.它是一种分类算法,算法思想是:一个样本与数据集中的 k 个样本最相似,如果这 k 个样本中的大多数属于某一个类别,则该样本也属于这 ...

  2. 第k短路 算法详解(图解)与模板(A* 算法)

    本博文来自bestsort (转载请保留此信息) A*是一种启发式搜索,根据目标地点和当前点的距离和估计要走的步数来决策下一步走哪个方向.而这两个参数,一般用g(x)g(x)g(x)和h(x)h(x) ...

  3. 3. KNN最近邻算法详解与关键技术剖析(理论篇)

    一.KNN算法概述 K最近邻(K-Nearest-Neighbour,KNN)算法可以说是最简单的分类算法,易于理解,其核心思想就是距离的比较,即离谁最近,就被归类于谁(群体投票的方式). 通俗解释: ...

  4. NEAT(NeuroEvolution of Augmenting Topologies)算法详解与实践(基于NEAT-Python)

    NEAT(NeuroEvolution of Augmenting Topologies)算法详解与实践(基于NEAT-Python) NEAT算法详解 NEAT算法概述 NEAT编码方案 结构突变 ...

  5. 计算机图形几何算法详解勘误

    一直在看<计算机图形几何算法详解>这本书,但是在用的过程中发现了一些错误,一直以为是自己的错误,后来在网上找到了这本书的勘误信息,不过是英文原版的,但是还是想贴出来,以便查找 07 Jul ...

  6. 图解机器学习算法(13) | 聚类算法详解(机器学习通关指南·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/34 本文地址:https://www.showmeai.tech/article-d ...

  7. 最短路径问题---Floyd算法详解

    前言 Genius only means hard-working all one's life. Name:Willam Time:2017/3/8 1.最短路径问题介绍 问题解释: 从图中的某个顶 ...

  8. kmeans算法详解和python代码实现

    kmeans算法详解和python代码实现 kmeans算法 无监督学习和监督学习 监督学习: 是通过已知类别的样本分类器的参数,来达到所要求性能的过程 简单来说,就是让计算机去学习我们已经创建好了的 ...

  9. Matlab人脸检测算法详解

    这是一个Matlab人脸检测算法详解 前言 人脸检测结果 算法详解 源代码解析 所调用函数解析 bwlabel(BW,n) regionprops rectangle 总结 前言 目前主流的人脸检测与 ...

  10. 目标检测 RCNN算法详解

    原文:http://blog.csdn.net/shenxiaolu1984/article/details/51066975 [目标检测]RCNN算法详解 Girshick, Ross, et al ...

最新文章

  1. 【仿去哪儿】骆驼动画加载
  2. python深度学习环境支撑列表 各版本对应关系,Keras,TensorFlow,pytorch ,caffe等。
  3. vueform表单文件上传_峰哥说技术系列-8.Spring Boot文件上传(Form表单和Ajax方式)
  4. webpack4.x版本与webpack-cli高版本之间存在的bug
  5. 银行利率是5.45%,房贷是4.9%,有钱该提前还房贷还是存款?
  6. Zabbix3.0 安装Graphtree
  7. Mapreduce中maptask过程详解
  8. php变量值传递,PHP将值传递到包含文件中的变量
  9. string转Char*( error C2440: '=' : cannot convert from 'const char *' to 'char *')
  10. householder变换解线性方程组matlab实现
  11. 用oracle的sqlload导入文件到数据库
  12. 数据库系统——学习资料(更新.........)
  13. 基于SSM的物业管理系统-JSP MYSQL小区物业费管理系统
  14. AutoDesk EAGLE 9.6.2 Free版 在win10下闪退的解决方法
  15. 网络编程:UDP的socket编程(Linux)
  16. YQMKPAT(CAD图案填充插件)v2.1绿色版
  17. linux中U盘用fdisk等命令查询不到
  18. IDEA 安装插件后,重启插件消失问题
  19. 计算机安装系统后鼠标无法使用,电脑重装系统后鼠标键盘不能用怎么办
  20. 小龙秋招【面试笔记】正式发布,速来围观!(已有40+同学斩获大厂offer)

热门文章

  1. 判断kkt条件的例题_浅谈最优化问题的KKT条件
  2. Exception(异常) 和 Error(错误)区别解析
  3. 苹果手机iOS 11.4越狱步骤及错误解决
  4. 重定向(response)与转发(request)
  5. Windows开启监控
  6. 这种方法学习3ds max,做图容易,上手快
  7. Spring系列学习之Spring Data R2DBC数据访问
  8. 判断一个对象为空对象的五种方法
  9. c语言byte数组转化为字符串,数组转字符串
  10. matplotlib中坐标轴控制总结