Kmeans原理公式图文详解

2023-11-06

在网上查看了些博客,感觉大家都对数学公式的解释的比较晦涩,下面我结合一个非常简单的示意图解释下他的数学公式,理解不到位的请留言。

kmeans是一种聚类算法下面是算法的描述

  • 给定训练样本是这里写图片描述每一个

这里写图片描述,即每一个样本元素都是n维向量。为了便于理解在后面的示意图中采用二维的向量。

step1:
   随机选取k个聚类质心点为这里写图片描述

step2:
   重复下面过程直到手链

       对于每一个样本i计算其应该属于的类这里写图片描述

      对于每一个类这里写图片描述,重新计算该类的质心这里写图片描述

以下是转自http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006910.html的解释

其中,K是给定的聚类数,这里写图片描述代表样例i与k个类中距离最近的那个类,这里写图片描述的值是1到k中的一个。质心这里写图片描述代表我们对属于同一个类的样本中心点的猜测,拿星团模型来解释就是要将所有的星星聚成k个星团,首先随机选取k个宇宙中的点(或者k个星星)作为k个星团的质心,然后第一步对于每一个星星计算其到k个质心中每一个的距离,然后选取距离最近的那个星团作为这里写图片描述,这样经过第一步每一个星星都有了所属的星团;第二步对于每一个星团,重新计算它的质心(对里面所有的星星坐标求平均)。重复迭代第一步和第二步直到质心不变或者变化很小。

相信到这里很多人看的一头雾水,这里我接着博主的描述再进一步解释。

第一个公式中的arg是标记符号,即表明哪个样本参数属于哪个类用的,后面的紧跟着的min最小化j是我们接下来要说的J这个函数。如下:这里写图片描述
这是kmeans算法中定性描述,公式里面的符号还是上面所说的符号。这里写图片描述这里写图片描述表示第1个样本所属的类别,这里写图片描述表示数据点x(i)被归类到 这里写图片描述的时候为 1 ,否则为 0 。

下面通过图文来解释这个公式,一直按照流程聚类一个样本相信大家就能很好地理解这个公式表达的意思了

这里写图片描述

  • 用kmeans算法将三个样本聚类成2类,图中的红点为样本点,蓝点为随即初始的两类的样本点的质心,黑色连线代表每个样本点到某一类质心的距离。J函数最小的意思就是选取这些黑色的距离线使其长度和最小,并且从红点出发的线只能选取一次,即如图中的1.9这条线和2这条线由于都是从同一个红点出发所以只能选取一个进行相加,选取的总线数就是红点的个数,下面两张图分别是多种组合选择的二种选取结果

这里写图片描述

其中绿线为选取的线,他们的和为1.9+2+2.3=6.2

这里写图片描述

其中绿线为选取的线,他们的和为1.9+1.2+1=4.1

对比上面两张图可以看出,后者的和小,即J值小。这里第二种选取方案也是全局最优选取方案,即所有选取方案中最小的一个。此时,可以把三个点分成两类,如下图
这里写图片描述
分成2类后再重新计算每类的质心,以及质心到各个样本点的距离,如下图。需要注意的是由于黄色类只有一个样本点,即该类的质点就是该样本点,故其中一个“0”表示质点到该样本点的距离为零。
这里写图片描述
仍然按照,找每个红点到蓝点的一条线的和最小的组合方式,注意每个红点到蓝点的多个距离值只容许一条计算,下图是错误的,其中一个红有两条线参加了计算,1和0.8这两条线只能有一天参与求和。
这里写图片描述
此时,样本被分成新的两类,如下图
这里写图片描述
再求新分的两类的质心
这里写图片描述
重复以上操作,直到质心不变,即J函数值最小,结束算法。
这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kmeans原理公式图文详解 的相关文章

随机推荐

  • 怎样更改Jupyter NoteBook默认的工作空间

    1 首先打开命令窗口 输入 jupyter notebook generate config 2 根据上面得到的路径 找到jupyter notebook config py这个配置文件 3 用记事本打开 查找directory 4 把前面
  • 内容安全综合实践-数字水印

    DCT实现数字水印功能模块 1 整体效果 功能 添加和提取字符水印 添加和提取图片水印 整体效果 2 数字水印的基本特点 1 不可见性 在宿主数字媒体中嵌入一定数量的附加信息后 不能引起明显的将质现象 隐藏的数据不易觉察 即无法人为的看见或
  • Java中的关键字

    Abstract 表明类或者成员方法具有抽象属性 Assert 用来进行程序调试 Boolean 基本数据类型之一 布尔类型 Break 提前跳出一个块 Byte 基本数据类型之一 字节类型 Case 用在switch语句之中 表示其中的一
  • 蓝桥杯算法模板

    模拟散列表 单链表 import java io import java util Scanner public class dlb private static int N 100010 private static int head p
  • STL之mismatch

    判断两个区间的第一个不匹配点 返回一个由两个迭代器组成的pair 其中第一个迭代器指向第一个区间的不匹配点 第二个迭代器指向第二个区间的不匹配点 如果都匹配 返回的是指向两个区间的last迭代器 quality 1 采用默认operator
  • VUE element-ui 之button按钮之间切换时单个按钮持续聚焦状态实现(点击按钮聚焦,仅当点击其他按钮时,之前的按钮会失焦,当前按钮聚焦)

    多个按钮切换时 页面切换 假设不做处理会出现点击按钮时聚焦 离开按钮点击任何地方 鼠标单击 按钮会失焦 我这里要求实现点击按钮聚焦 仅当点击其他按钮时 之前的按钮会失焦 当前按钮聚焦 也就是提醒用户当前处于哪个维度的页面 这里自己研究的方法
  • apt install报错E: Unmet dependencies. Try ‘apt --fix-broken install‘ with no packages的解决方案

    摘要 最近在一台Ubuntu 22 04系统中部署语音识别项目 不知道怎么 我使用apt install安装软件时报错 无论安装什么软件都是报同一个错误E Unmet dependencies Try apt fix broken inst
  • 柯美背包服务器系统,全能升级!全面合作!经纬科技与柯美中国正式签约

    经纬长期关注客户需求 现针对图文行业客户核心需求 加推卷材送料功能 该功能已在海外市场成熟应用1年多时间 可助力客户承接更多业务 但又不会因订单数量起伏导致设备闲置 真正实现一机多能 提升效率 创造价值 横向打通 睿思新科技 锐启新合作 真
  • .env.development(开发环境)、.env.prodction(正式环境)、自定义环境的使用

    1 配置文件 env development 开发环境下的配置文件 env production 生产环境下的配置文件 2 命名 属性必须以VUE APP 开头 案列 env development NODE ENV development
  • 《趣谈Linux》总结十:虚拟化

    37 虚拟化 Linux越来越强大了 例如 内存动不动就是百G内存 网络设备一个端口的带宽就能有几十G甚至上百G 存储在数据中心至少是PB级别的 一个P是1024个T 一个T是1024个G 这自然有了一些不灵活的地方 资源大小不灵活 有时候
  • python初阶---基础语法篇(二)

    文章目录 一 数据类型 二 列表 三 元组 四 集合 五 字典 六 序列 七 遍历函数map 八 筛选函数filter 九 累计函数reduce 一 数据类型 1 逻辑型 逻辑型又称布尔型 取值只有两种 0和1 或者真和假 False和Tr
  • 7.2

    include
  • Android自定义RecyclerView实现多级树

    Android自定义RecyclerView实现多级树 在Android开发中 RecyclerView是一个强大灵活的控件 常用于展示大量数据列表 而有时候我们需要实现多级树结构的列表 即每个节点下面可以包含子节点 这时候就需要对Recy
  • shell脚本启动jar包

    bin bash NAME spring admin echo NAME PID ps ef grep NAME grep java grep v grep awk print 2 echo 当前进程号为 PID echo for pid
  • iphone屏蔽系统更新_iphone如何实现永久屏蔽IOS系统更新?

    一直以来苹果的新系统更新覆盖率是全行业最快也是最高的 截止到ios13发布为止 ios12的全网覆盖率已经达到了惊人的90 iphone手机如何永久屏蔽IOS系统更新 对于ios13加入的诸多功能升级以及隐藏的一些不稳定因素 更多用户会选择
  • 线性代数 - 矩阵形式下的最小二乘法

    20201001 0 引言 最近在看 异常点检测 的时候 其中在PCA部分 准确来说是前面一小节 在进行推导的时候 使用了最小二乘法 其实这个东西本质上并不难 但是让我比较尴尬的是 很多线性代数的东西有些遗忘了 好在最近直截了当的复习让大部
  • Python3中with用法

    Python中的with语句用于用上下文管理器 context manager 定义的方法包装块的执行 它允许将常见的try except finally使用模式封装起来以方便重用 在Python中 在处理非托管资源 unmanaged r
  • Idea代码上传至Git完整教程(阿里云)

    项目背景 本期项目是一个数据化应用系统 使用的是idea开发后台 前端使用微信小程序的项目 项目中 为了代码管理方便 使用了阿里云作为代码托管 直接使用idea上传下载代码 本期文章介绍idea上传代码的过程 与大家分享 如有不行详细或错误
  • Python code模块

    code 解释器基类 code 模块提供了在 Python 中实现 read eval print 循环的功能 它包含两个类和一些快捷功能 可用于构建提供交互式解释器的应用程序 class code InteractiveInterpret
  • Kmeans原理公式图文详解

    在网上查看了些博客 感觉大家都对数学公式的解释的比较晦涩 下面我结合一个非常简单的示意图解释下他的数学公式 理解不到位的请留言 kmeans是一种聚类算法下面是算法的描述 给定训练样本是每一个 即每一个样本元素都是n维向量 为了便于理解在后