56、最近邻向量量化(LVQ) 网络训练对输入向量进行分类

1、LVQ 网络训练对输入向量进行分类简介

1)简介

LVQ(最近邻向量量化)是一种简单而有效的神经网络模型,用于对输入向量进行分类。LVQ网络通过学习一组原型向量(也称为代码矢量或参考向量),来表示不同的类别。

在LVQ网络训练过程中,网络会遍历训练数据集中的每个样本,并根据与样本最接近的原型向量的距离,更新原型向量的权重。当网络收敛时,原型向量将会分布在输入空间中,形成不同类别的“聚类”。

在分类时,输入样本会被与每个原型向量进行比较,选择与之最接近的原型向量所代表的类别作为输出结果。这样,LVQ网络能够对输入向量进行有效的分类。

总的来说,LVQ网络训练过程简单且易于理解,同时在处理各种分类问题时表现优秀,因此被广泛应用于模式识别、数据挖掘等领域。

2)对输入向量进行分类原理

LVQ(最近邻向量量化)网络训练过程是基于原型向量的调整以实现对输入向量进行分类的原理。以下是LVQ网络训练对输入向量进行分类的原理:

  1. 初始化原型向量:首先,LVQ网络需要初始化一组原型向量,每个原型向量代表一个类别。这些原型向量可以是随机选择的,也可以利用某种聚类算法得到。

  2. 训练过程:LVQ网络会遍历训练数据集中的每个样本。对于每个样本,LVQ网络会计算样本与每个原型向量之间的距离,一般使用欧式距离或其他距离度量方法。

  3. 最近邻选择:找到与输入样本距离最近的原型向量,即最近邻原型向量。这个过程通常称为“竞争”。

  4. 更新原型向量:根据最近邻原型向量的类别和输入样本的真实类别,LVQ网络会调整最近邻原型向量的权重。一般情况下,如果最近邻原型向量代表的类别与输入样本的真实类别相同,则向输入样本方向调整原型向量的权重;否则,远离输入样本方向调整原型向量的权重。

  5. 收敛:重复以上步骤,直到LVQ网络的原型向量不再发生明显变化,表明网络已经收敛。此时,原型向量将会形成不同类别的聚类,可以进行输入向量的分类。

通过不断地调整原型向量的权重,LVQ网络能够在训练过程中逐步学习并调整各类别的边界,从而实现对输入向量的准确分类。LVQ网络训练基于最近邻选择和权重更新原型向量的方法,使得网络能够有效地学习样本的特征并进行分类。

3)matlab中的LVO层

在 MATLAB 中,可以使用 Neural Network Toolbox 中提供的 lvqnet 函数创建最近邻向量量化(LVQ)网络层。LVQ 网络层是一种简单的神经网络层,用于模式分类和聚类任务。

以下是在 MATLAB 中创建 LVQ 网络层的基本步骤:

首先,确保已经安装了 Neural Network Toolbox。如果尚未安装,可以在 MATLAB 中使用 add-on explorer 安装该工具箱。

使用 lvqnet 函数创建 LVQ 网络层。示例代码如下:

net = lvqnet(10); % 创建具有 10 个类别的 LVQ 网络

在上面的示例中,lvqnet 函数创建了一个具有 10 个类别的 LVQ 网络,可以根据需要设置不同的类别数量。

接着,使用 lvqnet 网络训练样本数据。示例代码如下:

net = train(net, input, target); % input 是样本数据,target 是样本对应的目标分类

在这里,input 是输入样本数据矩阵,每行代表一个样本数据;target 是样本对应的目标分类矩阵,每行表示一个样本对应的目标分类。

最后,使用训练好的 LVQ 网络进行分类。示例代码如下:

output = net(input); % 对输入数据进行分类,output 是分类结果

在上面的代码中,input 是需要分类的数据,然后使用训练好的 LVQ 网络 net 对输入数据进行分类,最终结果存储在 output 中。

通过以上步骤,可以在 MATLAB 中创建和使用 LVQ 网络层进行模式分类和聚类任务。还可以根据具体需求进一步调整网络结构、训练参数等。

2、输入参数

1)说明

X 为 10 个二元素样本输入向量,C 为这些向量所属的类。这些类可以通过 IND2VEC 变换为用作目标 T 的向量。

2)配置参数代码

x = [-3 -2 -2  0  0  0  0 +2 +2 +3;0 +1 -1 +2 +1 -1 -2 +1 -1  0];
c = [1 1 1 2 2 2 2 1 1 1];
t = ind2vec(c);

 3)绘制数据点

说明:红色 = 第 1 类,青色 = 第 2 类
LVQ 网络表示具有隐藏神经元的向量聚类,并将这些聚类与输出神经元组合在一起以形成期望的类。

代码

figure(1)
colormap(hsv);
plotvec(x,c)
title('Input Vectors');
xlabel('x(1)');
ylabel('x(2)');

试图效果

980c9b37837b4a6282751d3c0be9f4d8.jpeg

 3、创建一个具有四个隐藏神经元的 LVQ 层

1)说明

LVQNET 创建了一个具有四个隐藏神经元的 LVQ 层,学习率为 0.1。然后针对输入 X 和目标 T 配置网络

2)创建网络

代码

net = lvqnet(4,0.1);
net = configure(net,x,t);

 视图效果

72f7829600eb4562b41921fbd4d6eb9d.png

3) 绘制竞争神经元权重向量

代码

figure(2)
w1 = net.IW{1};
plot(w1(1,1),w1(1,2),'ow')
title('Input/Weight Vectors');
xlabel('x(1), w(1)');
ylabel('x(2), w(2)');

视图效果

4283f513935a42dfab9788db448d2a83.jpeg

 4、训练网络

说明:改写默认的训练轮数,然后训练网络。训练完成后,重新绘制输入向量“+”和竞争神经元的权重向量“o”。红色 = 第 1 类,青色 = 第 2 类。


代码

net.trainParam.epochs=150;
net=train(net,x,t);figure(3)
plotvec(x,c);
hold on;
plotvec(net.IW{1}',vec2ind(net.LW{2}),'o');

试图效果

27bf55fa99b9402cada5f5928af1cf49.jpeg

 5、使用 LVQ 网络作为分类器

1)说明

使用 LVQ 网络作为分类器,其中每个神经元都对应于一个不同的类别。提交输入向量 [0.2; 1]。红色 = 第 1 类,青色 = 第 2 类。


2)代码

x1 = [0.2; 1];
y1 = vec2ind(net(x1))y1 =2

6、总结

最近邻向量量化(LVQ)是一种用于对输入向量进行分类的神经网络模型。以下是LVQ的一些关键特点和总结:

  1. LVQ利用一组原型向量(参考向量)表示不同的类别,在训练过程中调整原型向量的权重以逼近输入向量。

  2. LVQ训练过程中,网络通过计算输入向量与每个原型向量之间的距离,并更新距离最近的原型向量的权重。

  3. 当LVQ网络收敛时,原型向量将会分布在输入空间中,形成不同类别的“聚类”,从而实现分类功能。

  4. 在分类时,输入向量会与每个原型向量进行比较,选择与之最接近的原型向量所代表的类别作为输出结果。

  5. LVQ网络具有简单易懂的结构和训练过程,且对各种分类问题表现出色。

总的来说,LVQ是一种常用的分类神经网络模型,能够有效地对输入向量进行分类,并在模式识别、数据挖掘等领域中得到广泛应用。

7、源代码

代码

%% LVQ 网络训练为根据给定目标对输入向量进行分类。
%输入参数
%X 为 10 个二元素样本输入向量,C 为这些向量所属的类。这些类可以通过 IND2VEC 变换为用作目标 T 的向量。
x = [-3 -2 -2  0  0  0  0 +2 +2 +3;0 +1 -1 +2 +1 -1 -2 +1 -1  0];
c = [1 1 1 2 2 2 2 1 1 1];
t = ind2vec(c);
%绘制数据点
%红色 = 第 1 类,青色 = 第 2 类
%LVQ 网络表示具有隐藏神经元的向量聚类,并将这些聚类与输出神经元组合在一起以形成期望的类。
figure(1)
colormap(hsv);
plotvec(x,c)
title('Input Vectors');
xlabel('x(1)');
ylabel('x(2)');
%创建一个具有四个隐藏神经元的 LVQ 层
%LVQNET 创建了一个具有四个隐藏神经元的 LVQ 层,学习率为 0.1。然后针对输入 X 和目标 T 配置网络
net = lvqnet(4,0.1);
net = configure(net,x,t);
%绘制竞争神经元权重向量figure(2)
w1 = net.IW{1};
plot(w1(1,1),w1(1,2),'ow')
title('Input/Weight Vectors');
xlabel('x(1), w(1)');
ylabel('x(2), w(2)');%训练网络
%改写默认的训练轮数,然后训练网络。训练完成后,重新绘制输入向量“+”和竞争神经元的权重向量“o”。红色 = 第 1 类,青色 = 第 2 类。
net.trainParam.epochs=150;
net=train(net,x,t);figure(3)
plotvec(x,c);
hold on;
plotvec(net.IW{1}',vec2ind(net.LW{2}),'o');
%使用 LVQ 网络作为分类器
%使用 LVQ 网络作为分类器,其中每个神经元都对应于一个不同的类别。提交输入向量 [0.2; 1]。红色 = 第 1 类,青色 = 第 2 类。
x1 = [0.2; 1];
y1 = vec2ind(net(x1))

 

 

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

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

相关文章

SAP Build4-office 操作

1. 邮件操作 1.1 前期准备 商店中找到outlook的sdk,添加到build中 在process中添加outlook的SDK 电脑上装了outlook的邮箱并且已经登录 我用个人foxmail邮箱向outlook发了一封带附件的销售订单邮件,就以此作为例子 1.2 搜索邮件 搜索有两层&…

计算机视觉、目标检测、视频分析的过去和未来:目标检测从入门到精通 ------ YOLOv8 到 多模态大模型处理视觉基础任务

文章大纲 计算机视觉项目的关键步骤计算机视觉项目核心内容概述步骤1: 确定项目目标步骤2:数据收集和数据标注步骤3:数据增强和拆分数据集步骤4:模型训练步骤5:模型评估和模型微调步骤6:模型测试步骤7:模型部署常见问题目标检测入门什么是目标检测目标检测算法的分类一阶…

CSS实现图片裁剪居中(只截取剪裁图片中间部分,图片不变形)

1.第一种方式:(直接给图片设置:object-fit:cover;) .imgbox{width: 100%;height:200px;overflow: hidden;position: relative;img{width: 100%;height: 100%; //图片要设置高度display: block;position: absolute;left: 0;right…

基于Java+SpringMvc+Vue技术的在线学习交流平台的设计与实现---60页论文参考

博主介绍:硕士研究生,专注于Java技术领域开发与管理,以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年,拥有近12年的管理工作经验,拥有较丰富的技术架构思想、较扎实的技术功底和资深的项目管理经…

AI+若依框架(低代码开发)

提前说明: 文章是实时更新,写了就会更。 文章是黑马视频的笔记,如果要自己学可以点及下面的链接: https://www.bilibili.com/video/BV1pf421B71v/一、若依介绍 1.版本介绍 若依为满足多样化的开发需求,提供了多个版本…

基于jeecgboot-vue3的Flowable流程-集成仿钉钉流程(一)图标svgicon的使用

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。 1、lowflow这里使用了tsx的动态图标,如下: import ./index.scss import type { CSSProperties, PropType } from vue import { computed, defineComponent, resolv…

MATLAB基础应用精讲-【数模应用】 岭回归(Ridge)(附MATLAB、python和R语言代码实现)

目录 前言 算法原理 数学模型 Ridge 回归的估计量 Ridge 回归与标准多元线性回归的比较 3. Ridge 参数的选择 算法步骤 SPSSPRO 1、作用 2、输入输出描述 3、案例示例 4、案例数据 5、案例操作 6、输出结果分析 7、注意事项 8、模型理论 SPSSAU 岭回归分析案…

支付宝沙箱对接(GO语言)

支付宝沙箱对接 1.1 官网1.2 秘钥生成(系统默认)1.3 秘钥生成(软件生成)1.4 golan 安装 SDK1.5 GoLand 代码1.6 前端代码 1.1 官网 沙箱官网: https://open.alipay.com/develop/sandbox/app 秘钥用具下载: https://ope…

并行处理百万个文件的解析和追加

处理和解析大量文件,尤其是百万级别的文件,是一个复杂且资源密集的任务。为实现高效并行处理,可以使用Python中的多种并行和并发编程工具,比如multiprocessing、concurrent.futures模块以及分布式计算框架如Dask和Apache Spark。这…

Mysql系列-Binlog主从同步

原文链接:https://zhuanlan.zhihu.com/p/669450627 一、主从同步概述 mysql主从同步,即MySQL Replication,可以实现将数据从一台数据库服务器同步到多台数据库服务器。MySQL数据库自带主 从同步功能,经过配置,可以实现基于库、表…

B端设计:任何不顾及用户体验的设计,都是在装样子,花架子

B端设计是指面向企业客户的设计,通常涉及产品、服务或系统的界面和功能设计。与C端设计不同,B端设计更注重实用性和专业性,因为它直接影响企业的效率和利益。 在B端设计中,用户体验同样至关重要。不顾及用户体验的设计只是空洞的表…

经典的layui框架,还有人用吗?令人惋惜。

自从layui官网宣布关闭之后,layui框架的用户飞速下滑,以至于到现在贝格前端工场承接的项目中,鲜有要求使用layui框架的,那么个框架还有人用吗? 一、layui没落是不是jquery惹的祸 layui的没落与jQuery无关。layui框架…

Hi3861 OpenHarmony嵌入式应用入门--UDP Server

本篇使用的是lwip编写udp服务端。需要提前准备好一个PARAM_HOTSPOT_SSID宏定义的热点,并且密码为PARAM_HOTSPOT_PSK。 修改网络参数 在Hi3861开发板上运行上述四个测试程序之前,需要根据你的无线路由、Linux系统IP修改 net_params.h文件的相关代码&…

起底:Three.js和Cesium.js,二者异同点,好比全科和专科.

Three.js和Cesium.js是两个常用的webGL引擎,很多小伙伴容易把它们搞混淆了,今天威斯数据来详细介绍一下,他们的起源、不同点和共同点,阅读后你就发现二者就像全科医院和专科医院的关系,很好识别。 一、二者的起源 Th…

性能测试相关理解---性能测试流程(二)

六、性能测试流程(如何做性能测试?) 根据学习全栈测试博主的课程做的笔记 1、前期准备– 项目初期就开始,业务需求评审时尽量参与,对业务更深刻的认识(确定哪些是核心业务、哪些可能存在并发请求、确定什么地方会出现瓶颈,方便后…

WebOffice在线编微软Offfice,并以二进制流的形式打开Word文档

在日常办公场景中,我们经常会遇到这种场景:我们的合同管理系统的各种Word,excel,ppt数据都是以二进制数组的形式存储在数据库中,如何从数据库中读取二进制数据,以二进制数据作为参数,然后加载到浏览器的Office窗口&…

【无标题】地平线2西之绝境/Horizon Forbidden West™ Complete Edition(更新:V1.3.57)

游戏介绍 与埃洛伊同行,在危险壮美的边疆之地揭开种种未知的神秘威胁。此完整版可完整享受广受好评的《地平线 西之绝境™》内容和额外内容,包括在主线游戏后展开的后续故事“炙炎海岸”。 重返《地平线》中遥远未来的后末日世界,探索远方的土…

Twitter群发消息API接口的功能?如何配置?

Twitter群发消息API接口怎么申请?如何使用API接口? 为了方便企业和开发者有效地与用户互动,Twitter提供了各种API接口,其中Twitter群发消息API接口尤为重要。AokSend将详细介绍Twitter群发消息API接口的功能及其应用场景。 Twit…

html+css+js贪吃蛇游戏

贪吃蛇游戏&#x1f579;四个按钮控制方向&#x1f3ae; 源代码在图片后面 点赞❤️关注&#x1f64f;收藏⭐️ 互粉必回&#x1f64f;&#x1f64f;&#x1f60d;&#x1f60d;&#x1f60d; 源代码&#x1f4df; <!DOCTYPE html> <html lang"en"&…

tomcat原理、结构、设计模式

1 what 一种web服务器&#xff0c;运行java servlet、jsp技术&#xff0c;能为java web提供运行环境并通过http协议处理客户端请求。即tomcat http服务器 servlet容器。同类产品有jetty Web应用&#xff1a;Web应用是指通过Web浏览器访问的应用程序&#xff0c;它使用Web技术…