KMeans, KNN, Meanshift

这三个玩意,因为要么带K,要么带Mean,所以吗,放在一起介绍一下:

Meanshift

因为我本身是图像处理出身,最早接触的是Meanshift,其经常用于图像分割,目标跟踪等方面,下面首先说一下Meanshift:

算法步骤:

  1. 在未被标记的数据点中随机选择一个点作为起始中心点center;
  2. 找出以center为中心半径为radius的区域中出现的所有数据点,认为这些点同属于一个聚类C。同时在该聚类中记录数据点出现的次数加1。
  3. 以center为中心点,计算从center开始到集合M中每个元素的向量,将这些向量相加求平均值,得到向量shift。
  4. center = center + shift。即center沿着shift的方向移动,移动距离是||shift||。
  5. 重复步骤2、3、4,直到shift的很小(就是迭代到收敛),记住此时的center。注意,这个迭代过程中遇到的点都应该归类到簇C1。
  6. 如果收敛时当前簇C的center与其它已经存在的簇C2中心的距离小于阈值,那么把C2和C合并,数据点出现次数也对应合并。否则,把C作为新的聚类。
  7. 重复1、2、3、4、5直到所有的点都被标记为已访问。
  8. 分类:根据每个类,对每个点的访问频率,取访问频率最大的那个类,作为当前点集的所属类。

 KMeans

算法步骤:

  1. 随机选取k个中心点。
  2. 遍历所有数据,将每个数据划分到最近的中心点中。
  3. 计算每个聚类的平均值,并作为新的中心点。
  4. 重复2-3,直到这k个中线点不再变化(收敛了),或执行了足够多的迭代。

KNN

算法步骤:

  1. 计算测试数据与各个训练数据之间的距离。
  2. 按照距离的递增关系进行排序。
  3. 选取距离最小的K个点。
  4. 确定前K个点所在类别的出现频率。
  5. 返回前K个点中出现频率最高的类别作为测试数据的预测分类。

 比较

KMeans与Meanshift是聚类算法,属于非监督学习,有前期的训练过程;

KNN是分类算法,监督学习,没有前期训练过程,一般通过KD对数据进行处理,以快速找到K个紧邻点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器灵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值