使用均值漂移来量化带宽分类数据

news2024/9/23 3:23:03

均值漂移概念

均值漂移的基本概念:沿着密度上升方向寻找聚簇点,其计算过程如下:
1 均值漂移算法首先找到一个中心点center(随机选择),然后根据半径划分一个范围
把这个范围内的点输入簇x的标记个数加1
2 在这个范围内,计算其它点到这个点的平均距离,并把这个平均距离当成偏移量 shift
3 把中心点center 移动偏移量 shift 个单位,当成新的中心点
4 重复上述步骤直到 shift小于一定阈值,即收敛
5 如果当前簇x的center和另一个簇x2的center距离小于一定阈值,则把当前簇归类为x2,否则聚类的类别+1
6 重复遍历所有点
其核心作用,自动分类,虽然人眼一眼就能看到大概的目标分类,但是在计算机里面,无法有感官计算,通过数值计算才能分别数据

使用sklearn 中的均值漂移函数来分类

1 生成等差数据看看,
我们使用np.linspace 去生成等差数列,用a,b 分别代表x轴,y轴,用list(zip) 变成散点

estimate_bandwidth 函数用来量化带宽

import numpy as np
from matplotlib import pyplot as plt
from sklearn.cluster import MeanShift, estimate_bandwidth
from sklearn.cluster.tests.common import generate_clustered_data

a=np.linspace(0,100,15)
b=np.linspace(20,120,15)
#c=np.linspace(300,599,20)
print(a)
print(b)
c=list(zip(a,b))
print(c)
X = c 

 #quantile 控制是否同一类别的距离
bandwidth = estimate_bandwidth(X, quantile=0.3, n_samples=len(X))
print(bandwidth)


meanshift = MeanShift(bandwidth=bandwidth, bin_seeding=True)  # 构建对象
meanshift.fit(X)
labels = meanshift.labels_

print(np.unique(labels))

fig, ax = plt.subplots()
cluster_num = len(np.unique(labels))  # label的个数,即自动划分的族群的个数
for i in range(0, cluster_num):
     x = []
     y = []
     for ind, label in enumerate(labels):
         if label == i:
             x.append(X[ind][0])
             y.append(X[ind][1])
     ax.scatter(x, y, s=1)
 
plt.show()

在这里插入图片描述
即使是等差数列我们也可以看到sklearn也能帮我们分类,图中可以看到根据颜色分成了四类

,我们使用自己造的数据来形成数据,像下面这样的数组
X = [[10.5,20.2], [11.1,21.1],[9,20],[8.0,22.1],[30.5,5.0],[31.7,7.1],[31.2,8.1],[100,20],[101,21],[100,17]]
打印出来的分类为[0,1,2] , 为三类,图中可以看出,确实如此。
在这里插入图片描述

使用函数生成

sklearn 有一个函数generate_clustered_data,生成族数据,为了演示,我们不使用手工造数据
X = generate_clustered_data(seed=1, n_samples_per_cluster=1000)

在这里插入图片描述
上图非常清楚,分成了三类

import numpy as np
from matplotlib import pyplot as plt
from sklearn.cluster import MeanShift, estimate_bandwidth
from sklearn.cluster.tests.common import generate_clustered_data

a=np.linspace(0,100,15)
b=np.linspace(20,120,15)
#c=np.linspace(300,599,20)
print(a)
print(b)
c=list(zip(a,b))
print(c)



X = generate_clustered_data(seed=1, n_samples_per_cluster=1000)
#X = [[10.5,20.2], [11.1,21.1],[9,20],[8.0,22.1],[30.5,5.0],[31.7,7.1],[31.2,8.1],[100,20],[101,21],[100,17]] 
#X = c 

 #quantile 控制是否同一类别的距离
bandwidth = estimate_bandwidth(X, quantile=0.3, n_samples=len(X))
print(bandwidth)


meanshift = MeanShift(bandwidth=bandwidth, bin_seeding=True)  # 构建对象
meanshift.fit(X)
labels = meanshift.labels_

print(np.unique(labels))

fig, ax = plt.subplots()
cluster_num = len(np.unique(labels))  # label的个数,即自动划分的族群的个数
for i in range(0, cluster_num):
     x = []
     y = []
     for ind, label in enumerate(labels):
         if label == i:
             x.append(X[ind][0])
             y.append(X[ind][1])
     ax.scatter(x, y, s=1)
 
plt.show()

代码非常简单,用好sklearn就行了

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

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

相关文章

GPT和爬虫有什么区别?如何利用爬虫实现GPT功能

GPT(Generative Pre-trained Transformer)和爬虫是两个完全不同的概念和技术。GPT是一种基于Transformer模型的自然语言处理模型,用于生成文本,而爬虫是一种用于从互联网上收集数据的技术。 GPT是由OpenAI开发的一种深度学习模型&…

以太网之ARP协议(八)

一、概要 在网络通信中主要以IP为主机标识进行数据通信的,但实际的数据链路层传输以MAC地址为数据传输的节点地址。那设备之间又是如何通过IP地址确认对应主机的MAC地址的?这就是ARP协议的工作。 ARP是一种以目标IP地址为线索,用来定位下一个…

300PLC转以太网模块plc300以太网通信模块

摘要 工业通讯的发展已经迅速到了一个令人咋舌的地步,以太网通讯已经成为了工业通讯的主流。而今天,我们要介绍的是一款以太网通讯处理器——捷米特ETH-S7300-JM01,它不仅成熟、稳定,而且价格优惠,为工业以太网通讯领域…

Qt对地震数据(文件格式*.Segd)实现将时域数据转频域数据

文件格式以segd为例,其他地震文件格式同理。 时域数据 时域数据通俗点讲就是我在某个时间段记录的一个值,然后经过一段时间后,产生的一组数据就是时域数据。 频域数据 频域数据是指信号在频率域上的表示,即信号的频率特性。频…

PowerShell快速ssh

文件 ~/.ssh/config 内容 Host masterHostName 192.168.10.154User root访问 $ ssh master 效果 进阶 配置秘钥 待续。。。

Transform、GameObject、Rigidbody

文章目录 零、初衷和溯源一、Transform类二、GameObject类三、Rigidbody类 零、初衷和溯源 这三个类的API官方文档,有些杂乱——本可以把它们分门别类的整理好,结果却是凌乱的堆在一起,令人恼火。   之所以把它仨放一起总结,是因…

【数据挖掘】时间序列教程【十】

5.4 通用卡尔曼滤波 上一节中描述的状态空间模型作为观测方程的更一般的公式 和状态方程 这里是一个p1 向量

simulink stateFlow流程图

基础 修改分支优先级 使用matlab workspace变量 例题 输出数组输入数组的平方 for循环 使用脚本的数值 实现数组索引

2021 RoboCom 世界机器人开发者大赛-本科组(初赛)

编程题得分:100 总分:100 7-1 懂的都懂 (20分) 众所周知,在互联网上有很多话是不好直接说出来的,不过一些模糊的图片仍然能让网友看懂你在说什么。然而对这种言论依然一定要出重拳,所以请你实现一个简单的匹配算法。 …

图像分类论文阅读

该论文通过结合VGG-19和VIT模型,实现乳腺超声图像的分类Breast Ultrasound Images Dataset | Kaggle PyTorch VGG19复现代码 # VGG19.py import torch import torch.nn as nnclass Conv(nn.Module):def __init__(self, in_channels, out_channels, kernel_size=1, stride=1,…

面向 “大模型” 的未来服务架构设计

文章目录 大模型热潮大模型落地服务设计 or 重构未来的服务架构微服务化分层化 大模型应用架构架构设计图架构 Demo 实现 小结附录 大模型热潮 今年的互联网赛道中 “顶流” 非大模型莫属。 科技部新一代人工智能发展研究中心 5 月底发布的《中国人工智能大模型地图研究报告》显…

极米H6 4K光学变焦版 打造全新4K观影体验

随着时代的发展,拥有家用智能投影的家庭也越来越多了。当下许多家用投影仪都搭载了智能系统,内含大量片源。另外,投影仪还可以通过不同接口接入不同的设备,如游戏机、电脑、U盘等。只需要一台投影便可以实现在线追剧、听歌、游戏、…

ZER-10-EP-L350C-224叠加式比例溢流阀放大器

ZER-06-EP-L105C-224、ZER-06-EP-L210C-224、ZER-06-EP-L350C-224、ZER-10-EP-L105C-224、ZER-10-EP-L210C-224、ZER-10-EP-L350C-224叠加式比例溢流阀由主阀体和溢流阀、阀插件、佰业比例放大器组成,标准叠加安装接口,与换向阀等配合使用,便…

【ELK企业级日志分析系统】安装与部署ELK详解

ELK 企业级日志分析系统 1.ELK概述1.1 ELK简介1.2 可以添加的其它组件1.3 filebeat结合logstash带来好处1.4 为什么要使用ELK?1.5 完整日志系统基本特征 2.ELK的工作原理3.部署ELK集群3.1 安装Elasticsearch3.2 安装Elasticsearch-head插件3.3 安装ELK Logstash3.4 安装ELK Ki…

HO49-二叉树的最近公共祖先

leetcode原题链接:二叉树的最近公共祖先 题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的…

Linux中的GO更新与冲突

发行版:CentOS GO更新 在使用go get安装某模块时,报错: ../../pkg/mod/golang.org/x/sysv0.5.0/unix/syscall.go:83:16: undefined: unsafe.Slice ../../pkg/mod/golang.org/x/sysv0.5.0/unix/syscall_linux.go:2271:9: undefined: unsafe.…

Verilog学习笔记5:简单的加法器

代码&#xff1a; //加法器 timescale 1ns/10ps module add( a, b, y ); input a; input b; output[1:0] y;assign yab;endmodule //testbench module add_tb; reg a; reg b; wire[1:0] y;add add(.a(a),.b(b),.y(y));initial begina<0;b<0;#10 a<1;b<0;#10 a&l…

SpringMVC 中的视图如何渲染模型数据

SpringMVC 中的视图如何渲染模型数据 SpringMVC 是一个基于 Spring 框架的 Web 框架&#xff0c;它提供了一种方便的方式来处理 HTTP 请求和响应。在 SpringMVC 中&#xff0c;视图是用来渲染模型数据的组件&#xff0c;它们负责将模型数据转换为 HTML、JSON、XML 等格式的响应…

风沙文字粒子制作

目录 一、导入素材 二、合成介绍 三、文字合成新建和制作 四、文字动画合成新建和制作 五、风沙文字消失合成的新建和制作 六、风沙文字消失合成制作完成 七、制作风沙文字出现合成 风沙文字粒子效果如下&#xff1a; AE模板风沙文字粒子宣传片片头片尾 一、导入素材 打…

Windows server 2012服务器远程桌面登录时出现错误提示:“由于没有远程桌面授权服务器可以提供许可证,远程会话被中断

简单粗暴&#xff1a; Windows server 2012服务器远程桌面登录时出现错误提示&#xff1a;“由于没有远程桌面授权服务器可以提供许可证&#xff0c;远程会话被中断。请跟服务器管理员联系 使用 mstsc /admin /v:目标ip 来强制登录服务器&#xff0c;但只能是管理员身份…