【聚类算法】MeanShift算法

news2024/11/20 8:34:40

every blog every motto: You can do more than you think.
https://blog.csdn.net/weixin_39190382?type=blog

0. 前言

MeanShift算法,同样是一种基于密度的聚类算法。两种算法直观理解都比较好理解。
DBSCAN:向身边人逐渐发展下线模式
MeanShfit:根据“号召力”逐渐推选老大哥

这两种朴素的想法大部分人应该都能想到,但背后需要完备的数学支持,才能真正成为“发明人”。

直觉有时候挺重要的。

请添加图片描述
在这里插入图片描述

1. 正文

1.1 概念

Mean Shift算法最早是由Fukunaga和Hostetler在1975年提出的,2002年,Comaniciu和Meer对该算法进行了改进,并给出了更加完整的理论分析和证明。用于目标跟踪、显著性区域检测。在数据挖掘、图像处理、社交网络分析也得到了广泛的应用。

1.2 基本流程

  1. 从(未标记)数据中随机选择一个样本作为中心center(老大哥
  2. 找出以当前样本作为中心一定范围内(指定半径,bandwidth)其他样本点(小弟),记为M,对将他们归为簇c(取一个霸气的名字,斧头帮),同时,增加属于该类样本的概率(次数 +1老大哥找小弟,确定帮名斧头帮,并对每个小弟的衷心程度打分记录
  3. 计算样本中心到M集合的平均向量shift,并移动样本中心,center = center + shift (根据“号召力”重新确定老大哥
  4. 重复2、3过程,直到shift大小小于一个指定的值,即收敛。记录此时的center。此时,我们找到了样本中心,以及对周围的样本进行了标记。(确定了最终的老大哥,帮名,小弟衷心程度
  5. 重复1、2、3、4过程。如果两个样本中心距离小于阈值,则合并(帮派合并
  6. 对非样本中心的样本点分类。(小弟可能对多个帮派感兴趣,根据他对各帮派的衷心程度不同划分到不同的帮派)

请添加图片描述
平均偏移向量:
中心点减去每个样本点,再求和,最后除以样本个数
在这里插入图片描述
中心点更新:
在这里插入图片描述

1.3 核函数

上面计算偏移向量时,样本中心周围点发挥的作用是相同的,实际上离样本中心越近影响应该越大。

在实现中,我们通常使用高斯核函数来计算邻域内点的密度值,然后根据密度值来确定每个点的移动方向和距离。具体来说,对于一个数据点 x i x_i xi,它的邻域内点的密度可以计算为:
在这里插入图片描述

其中, K K K是高斯核函数, h h h是带宽参数, n n n是数据集的大小, d d d是数据点的维数。

使用高斯核函数可以保证在距离较远的点上密度值较小,在距离较近的点上密度值较大。

计算每个点的密度值之后,我们可以使用下面的公式来计算每个点的移动方向和距离:
在这里插入图片描述

1.4 demo

算法其中的bandwidth可用函数进行估计,如下:

from sklearn.cluster import MeanShift, estimate_bandwidth
import numpy as np

# 加载数据
data = np.loadtxt('data.txt')

# 估计 bandwidth 值
bandwidth = estimate_bandwidth(data)

# 基于估计的 bandwidth 进行聚类
ms = MeanShift(bandwidth=bandwidth)
ms.fit(data)

参考

[1] https://blog.csdn.net/Cristiano2000/article/details/119673252
[2] https://blog.csdn.net/google19890102/article/details/51030884
[3] https://blog.csdn.net/pantingd/article/details/107134729
[4] https://zhuanlan.zhihu.com/p/81629406
[5] https://zhuanlan.zhihu.com/p/543744941
[6] https://zhuanlan.zhihu.com/p/354913697
[7] https://blog.csdn.net/SkullSky/article/details/113142978
[8] https://zhuanlan.zhihu.com/p/618919552
[9] https://zhuanlan.zhihu.com/p/350031668
[10] https://blog.csdn.net/SkullSky/article/details/113142978#:~:text=Meanshift,%E8%81%9A%E7%B1%BB%E7%9A%84%E4%B8%BB%E8%A6%81%E6%80%9D%E8%B7%AF%E6%98%AF%EF%BC%9A%E8%AE%A1%E7%AE%97%E6%9F%90%E4%B8%80%E7%82%B9A%E4%B8%8E%E5%85%B6%E5%8D%8A%E5%BE%84R%E5%86%85%E7%9A%84%E7%82%B9%E4%B9%8B%E9%97%B4%E5%90%91%E9%87%8F%E8%B7%9D%E7%A6%BB%E7%9A%84%E5%B9%B3%E5%9D%87%E5%80%BCM%EF%BC%8C%E5%BE%97%E5%88%B0%E8%AF%A5%E7%82%B9%E4%B8%8B%E4%B8%80%E6%AD%A5%E7%9A%84%E6%BC%82%E7%A7%BB%EF%BC%88%E7%A7%BB%E5%8A%A8%EF%BC%89%E6%96%B9%E5%90%91%EF%BC%88A%3DM%2BA%EF%BC%89%E5%92%8C%E8%B7%9D%E7%A6%BB%EF%BC%88%7C%7CM%7C%7C%EF%BC%89%E3%80%82%20%E5%BD%93%E8%AF%A5%E7%82%B9%E4%B8%8D%E5%86%8D%E7%A7%BB%E5%8A%A8%E6%97%B6%EF%BC%8C%E8%AE%A1%E7%AE%97%E8%BF%99%E4%B8%AA%E7%82%B9%E4%B8%8E%E5%8E%86%E5%8F%B2%E7%B0%87%E4%B8%AD%E5%BF%83%E7%9A%84%E8%B7%9D%E7%A6%BB%EF%BC%8C%E6%BB%A1%E8%B6%B3%E5%B0%8F%E4%BA%8E%E9%98%88%E5%80%BCD%E5%8D%B3%E5%90%88%E5%B9%B6%E4%B8%BA%E5%90%8C%E4%B8%80%E4%B8%AA%E7%B1%BB%E7%B0%87%EF%BC%8C%E4%B8%8D%E6%BB%A1%E8%B6%B3%E5%88%99%E8%87%AA%E8%BA%AB%E5%BD%A2%E6%88%90%E4%B8%80%E4%B8%AA%E7%B1%BB%E7%B0%87%E3%80%82
[11] https://zhuanlan.zhihu.com/p/611488610

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/699337.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity 实用插件篇】 | UI适配神器 Device Simulator 移动设备模拟器 的详细使用方法

前言 【Unity 实用插件篇】 UI适配神器 Device Simulator 移动设备模拟器 的详细使用方法一、安装Device Simulator包二、使用Device Simulator模拟各种设备三、自定义设备类型信息 总结 🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由…

windowsVNC远程桌面连接虚拟机

准本环境关闭防火墙 systemct stop firewalld setenforce 0 iptables -F 第一步虚拟机安装VNC yum -y install tigervnc-server 第二步VNC密码 vncserver 查看vnc进程和ID windows客户端 下载 VNC 服务器 |VNC 连接 (realvnc.com)

开始商业太空飞行将推动维珍银河股价上涨

来源:猛兽财经 作者:猛兽财经 总结 (1)维珍银河宣布将在6月底开始商业太空飞行,这将成为该公司的一个重要里程碑事件。 (2)太空旅游飞行市场预计将在未来十年呈指数级增长,维珍银河…

如何在Windows中启用或禁用脱机文件

脱机文件是同步中心的一项功能,即使与服务器的网络连接不可用,用户也可以使用网络文件。 用户可以使用脱机文件(如果启用)使其网络文件始终脱机可用,以便在计算机上保留存储在网络上的文件副本。这使得用户即使在未连接到网络或服务器不可用的情况下也可以与他们一起工作…

ModaHub魔搭社区:详解向量数据库Milvus的Mishards:集群分片中间件(四)

目录 Mishards 简单示例 启动示例 前提条件 启动 Milvus 和 Mishards 实例 使用 docker-compose 启动示例 Mishards 简单示例 启动示例 前提条件 安装 MilvusPython 版本 3.6 及以上 启动 Milvus 和 Mishards 实例 请按照以下步骤在单机上启动单个 Milvus 实例和 Mis…

实现数据的搜索( 筛选 )功能

搜索功能 : 可以根据搜索框对数据进行搜索, 筛选出满足条件的数据, 搜索功能主要还是后端的SQL语句的拼接, 查出满足需求的数据, 再展示给前端 前端 : 在前端我们可以在 ElementUI里获取对应的功能组件 这里与发送到后端的表单数据里的account进行绑定也就是此处我们要用accou…

【AUTOSAR】BMS开发实际项目讲解(十六)----电池管理系统系统电池单体过充保护

系统设计 /System Design 电池单体过充保护 关联的系统需求 TSR-BMS-1101、TSR-BMS-1102、TSR-BMS-1103、TSR-BMS-1104、TSR-BMS-1105、TSR-BMS-1106、TSR-BMS-1106、TSR-BMS-1107、TSR-BMS-1108、TSR-BMS-1109、TSR-BMS-1110、TSR-BMS-1111、TSR-BMS-1112、TSR-BMS-1113、TSR…

50个知识点由浅入深掌握Javascript

前言 近期整理了JavaScript知识体系,50个知识点由浅入深掌握Js建议收藏,如有问题,欢迎指正。 1. 说说你对JS的理解 1995年,布莱登艾奇(美国人)在网景公司,用10天写的一门语言。 Js是一门&…

【ArcGIS】使用ArcMap进行北京1954-120E坐标转WGS84坐标系

背景 在进行青岛地市GIS数据迁移,涉及坐标转换,经过几天摸索终于找到迁移方法 投影坐标系 北京1954-120E坐标 对应为高斯-克吕格投影 300000 3000001 0 0(青岛本地坐标) 增量:-300000 -3000001(此处为示例&#xff0c…

Python print()函数使用详解,Python打印输出

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 print() 可以「打印输出」,常用来将内…

ICV报告:2023年全球量子信息上市企业第一季度报告

ICV分析师在报告中所认定的“上市”,指的是公司公开发行股票(例如IPO)、公司在交易所挂牌交易、公司以SPAC(特殊目的收购公司)等形式进入公开交易市场,实现公司资本化并披露公司信息的情况。 报告研究的“…

预约时间列表

/*** 时间列表* $interval 间隔X分钟* */ function timeList($day7,$time108:00,$time222:00,$interval60){$date_list [];//日期列表$today_date strtotime(date(Y-m-d,time()));for($i0;$i<$day;$i){$date_title date(Y-m-d,$today_date($i*86400));$buff array();for…

MATLAB App Designer基础教程 Matlab GUI入门(二)

MATLAB GUI入门 第二天 —— Lamp (灯)霓虹灯控件的使用 一、主要内容: 技巧 1.Tooltip的使用 2.Vislble和Enable 3.lf函数语句的使用需求&#xff1a;根据阈值进行提示 1.红色温度过高>500 ⒉橙色温度适中400~500 3.蓝色温度过低<400 二、项目背景: &#xff08;案例…

简单的手机记事本哪个好用?

在快节奏的现代生活中&#xff0c;我们经常需要记录下来重要的信息&#xff0c;而手机记事本成为了不可或缺的工具。然而&#xff0c;市面上琳琅满目的手机记事本软件&#xff0c;让人眼花缭乱&#xff0c;不知道该选择哪一个。 敬业签是功能强大、操作简单的手机记事本&#…

最新,2023年6月CDGP设计及论述题解析

2023年6月CDGP设计及论述题解析 &#xff08;加gzh“大数据食铁兽”&#xff0c;回复“2023cdgp”获取完整版&#xff09; 酒店会员建模 结合国内外数据安全法律法规&#xff0c;谈谈境外传输数据安全管理体系建设 国内&#xff1a;《数据安全法》、《网络安全法》、2022年9月…

【juc】原子数组

目录 一、代码示例二、示例截图 一、代码示例 package com.learning.atomic;import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.concurrent.atomic.AtomicIntegerArray; import java.util.function.BiConsumer; import java.uti…

Qt-解决异常报错“QAxBase::setControl: requested control XXX could not be instantiated”

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 问题说明 使用Qt开发的过程中&#xff0c;QAxObject是经常用到的一个类&#xff0c;用于操作Windows中各种COM接口&#xff0c;进…

什么是开源工作流系统?内容涉及哪些方面?

随着低代码开发市场的繁荣发展&#xff0c;它的灵活、简便、易操作、好维护等优势特点深得广大用户朋友的喜爱&#xff0c;是推动其走向流程化管理的重要推动力。那么&#xff0c;您了解开源工作流系统吗&#xff1f;知道它都有哪些主要内容吗&#xff1f;如果想了解这方面的内…

浅析金鸣识别所用的Canny边缘检测算法和Sobel算子

Canny边缘检测算法和Sobel算子都是金鸣识别常用的图像边缘检测算法&#xff0c;在识别图片表格过程中金鸣识别通常会根据不同的场景混合使用它们&#xff0c;以达到最佳的识别效果&#xff0c;它们是非常先进的算法&#xff0c;下面我们来看看它们的实现步骤与区别。 Canny边缘…

多智能体强化学习理论与算法总结

多智能体强化学习理论与算法总结 先搞明白on-policy和off-policy 【强化学习】一文读懂&#xff0c;on-policy和off-policy 我的理解&#xff1a;on-policy就是使用最新的策略来执行动作收集数据&#xff0c;off-policy的训练数据不是最新策略收集的。on-policy也是使用同个策…