【代码】一个LVQ神经网络的详解实例

news2024/7/6 17:45:51

本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com

     LVQ神经网络是用于样本分类的一个常用算法,本文先简单回顾LVQ神经网络是什么,然后展示如何用matlab工具箱来训练一个LVQ神经网络

 

 

目录

一. LVQ神经网络简介

1.1 LVQ神经网络是什么

1.2 LVQ神经网络的拓扑表示

二. 如何使用matlab训练一个LVQ神经网络   

2.1 matlab工具箱实现LVQ的代码   

2.2 关键代码解说    

2.3 训练结果    

三、 相关文章

3.1-LVQ的学习目录:bp.bbbdata.com/teach/71

3.2-SVM的学习目录:bp.bbbdata.com/teach/56

3.3-BP的学习目录:bp.bbbdata.com/teach/2


一. LVQ神经网络简介

本节回顾LVQ神经网络的思想和关键知识
 

1.1 LVQ神经网络是什么

LVQ用于解决分类问题,它先对每个类别都初始化一些类别判别中心点,然后通过训练来调整这些类别判别中心的位置,使它们能较好地识别训练样本

这样,来了新样本,只要判断新样本离哪个聚类中心点近,就判断样本属于该聚类中心点所代表的类别

1.2 LVQ神经网络的拓扑表示

LVQ一般用一个三层神经网络来表示,
它的拓扑结构如下:

其中,每个隐层节点代表着一个类别判别中心,它与输入层的权重W^{21}就是它的位置,它的输出层的连接W^{32}代表着它是哪个类别的判别中心

例如,某个隐节点的输入权重为[0.3 0.5],输出权重为[0 1],则代表它的位置为[0.3,0.5], 是类别1的判别中心

二. 如何使用matlab训练一个LVQ神经网络   

本节讲解如何用matlab工具箱来训练一个LVQ神经网络

2.1 matlab工具箱实现LVQ的代码   

下面以一个例子,讲述如何用matlab工具箱实现LVQ神经网络
代码如下:

%代码说明:matlab工具箱训练一个LVQ神经网络
%来自《老饼讲解神经网络》bp.bbbdata.com ,matlab版本:2018a
%数据准备
clear all ;close all 
rand('seed',70)
P = [-3 -2 -2  0  0.5  -0.5  0 +2 +2 +3; ...
    0 +1 -1 +2 +1 -1 -2 +1 -1  0];                    % 输入数据
Tc = [1 1 1 2 2 2 2 1 1 1];                           % 输出类别
T = ind2vec(Tc);                                      % 将输出转为one-hot编码(代表类别的01向量)

%网络训练
net = newlvq(P,4,[0.5 ,0.5],0.01,'learnlv1');         % 建立一个LVQ神经网络,用lvq1规则训练
net = train(net,P,T);                                 % 训练神经网络
%预测
Y = sim(net,P);                                       % 预测(one-hot形式)
Yc = vec2ind(Y);                                      % 将one-hot编码形式转回类别编号形式
% 提取出各个类别的判别中心                            
c       = net.iw{1,1};                                % 中心
c_class = net.lw{2,1};                                % 中心所属类别
c       = [vec2ind(c_class)',c]                       % 添加中心的类别标签


% -------绘制结果-----------------
figure
% 绘制原始数据
subplot(2,1,1)
plot(P(1,Tc==1),P(2,Tc==1),'o','MarkerEdgeColor','k','MarkerFaceColor','b','MarkerSize',10)
hold on 
plot(P(1,Tc==2),P(2,Tc==2),'o','MarkerEdgeColor','k','MarkerFaceColor','g','MarkerSize',10)
legend('类别1','类别2')
title('原始数据类别')
% 绘制预测结果
subplot(2,1,2)
plot(P(1,Yc==1),P(2,Yc==1),'o','MarkerEdgeColor','k','MarkerFaceColor','b','MarkerSize',10)
hold on 
plot(P(1,Yc==2),P(2,Yc==2),'o','MarkerEdgeColor','k','MarkerFaceColor','g','MarkerSize',10)
hold on 
% 绘制网络的隐节点(类别判别中心)
plot(c(:,2),c(:,3),'o','MarkerEdgeColor','k','MarkerFaceColor','y','MarkerSize',10)
for i = 1: size(c,1)
text(c(i,2)-0.050,c(i,3)+0.02,num2str(c(i,1)))
end
title('LVQ预测类别')

2.2 关键代码解说    

其中,核心代码为

net = newlvq(P,4,[0.5 ,0.5],0.01,'learnlv1');

它用于构建一个LVQ神经网络,
其中,
👉 1. P是训练数据的输入                                                   
👉 2. 4代表我们使用4个隐节点                                           
           也就使用4个类别判别中心                    
👉 3. [0.5,0.5]代表上述4个隐节点的类别分配比例               
          也就是类别1、类别2的判别中心各2个          
👉 4. 0.01是学习率                                                               
👉 5. 'learnlv1'则指定了训练方法                                         

2.3 训练结果    

运行上述代码,得到结果如下


可见,训练后的LVQ神经网络的预测类别与真实样本一致,
它已经可以准确的对训练样本进行分类
关于类别判别中心的位置
上述代码的还打印了类别判别中心的信息,如下


其中,每一行代表一个判别中心
第一列表示是哪一个类别的判别中心,     
第2、3列表示判别中心的坐标                 

三、 相关文章

3.1-LVQ的学习目录:bp.bbbdata.com/teach/71

3.2-SVM的学习目录:bp.bbbdata.com/teach/56

3.3-BP的学习目录:bp.bbbdata.com/teach/2
 

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

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

相关文章

“首次公开一年连升两级的晋升大法”!

见字如面,我是军哥! 今天把江湖上失传已久的技术人晋升大法分享给各位,据说当年雷jun总就是用了此法三年就干到了技术高管,请各位务必做好学习和分享动作。 说真的,用好这三个办法,就算在 IT 大厂一年都可以…

脑挫裂伤是什么?脑挫裂伤的4大症状要警惕!

脑挫裂伤是头部遭受暴力而引起的原发性脑器质性损伤。脑挫裂伤既可发生于着力点的脑组织,也可发生于对冲部位。脑挫裂伤病人的临床表现可以由于损伤部位,范围,程度的不同而有差异。受伤较轻的可以只有轻微的症状而受伤,较重的可以…

这玩意真的有用吗?对,是的!Kotlin 的 Nothing 详解

视频先行 下面是视频内容的脚本文案原稿分享。 文案原稿 Kotlin 的 Nothing 类,无法创建出任何实例: public class Nothing private constructor() 所以所有 Nothing 类型的变量或者函数,都找不到可用的值: val nothing: Nothing …

电脑视频录屏软件哪个好用 电脑视频录屏怎么录屏

录屏是我们的工作和生活中非常大的一个需求,尤其对于专业的视频制作者来说,经常需要录制屏幕和编辑视频,因此找到便捷好用的录屏软件非常重要。今天就来分享一下电脑视频录屏软件哪个好用,电脑视频录屏怎么录屏。 一、电脑视频录…

2023 年第八届数维杯大学生数学建模挑战赛 B 题 节能列车运行控制优化策略

在城市交通电气化进程快速推进的同时,与之相应的能耗增长和负面效应也 在迅速增加。城市轨道交通中的快速增长的能耗给城轨交通的可持续性发展带来 负担。2018 年,北京、上海、广州地铁负荷占全市总负荷的 1.5%-2.5%,成为了 城市电网的最大单体负荷[1]。…

软考A计划-真题-分类精讲汇总-第一章(计算机组成原理与体系结构)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

Java每日一练(20230512) 最大间距、串联子串、最长回文子串

目录 1. 最大间距 🌟🌟🌟 2. 串联所有单词的子串 🌟🌟🌟 3. 最长回文子串 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 …

c++ 11标准模板(STL) std::vector<bool> (二)

定义于头文件 <vector> template<class Allocator> class vector<bool, Allocator>; std::vector<bool> 是 std::vector 对类型 bool 为空间提效的特化。 std::vector<bool> 中对空间提效的行为&#xff08;以及它是否有优化&#xff09;是实现…

使用ChatGPT完成部门和个人季度工作总结

“疫后元年“2023年的第一季度即将过去&#xff0c;相信各位社会人们都过得比往年更加紧张充实吧&#xff1f;转眼又到了完成季度工作总结的时间&#xff0c;完成本职工作之余还要抽出专门的时间完成优秀的工作总结报告&#xff0c;又更让大家本不富裕的休息时间雪上加霜。那么…

SCS【24】单细胞数据量化代谢的计算方法 (scMetabolism)

桓峰基因公众号推出单细胞生信分析教程并配有视频在线教程&#xff0c;目前整理出来的相关教程目录如下&#xff1a; Topic 6. 克隆进化之 Canopy Topic 7. 克隆进化之 Cardelino Topic 8. 克隆进化之 RobustClone SCS【1】今天开启单细胞之旅&#xff0c;述说单细胞测序的前世…

Oracle Cloud和足球

Oracle除了我们熟知的数据库产品&#xff0c;它还有很多技术和产品栈&#xff0c;而且在实践层面&#xff0c;已经有了很多可借鉴的案例&#xff0c;如果了解英超的朋友&#xff0c;可以发现最近几个赛季&#xff0c;英超的转播画面图标中&#xff0c;会出现Oracle Cloud&#…

操作系统的最强入门科普(Unix/Linux篇)

大家好&#xff0c;我是小枣君。 今天这篇文章&#xff0c;我们来聊聊操作系统&#xff08;Operating System&#xff09;。 说到操作系统&#xff0c;大家都不会陌生。我们天天都在接触操作系统——用台式机或笔记本电脑&#xff0c;使用的是windows和macOS系统&#xff1b;用…

为什么拿低绩效的人从来不反思自己的原因?连公司的前90%都挤不进去,还好意思找别人的理由?...

绩效是关乎打工人切身利益的大事&#xff0c;拿了高绩效欢天喜地&#xff0c;拿了低绩效垂头丧气&#xff0c;这是人之常情&#xff0c;但最近一位字节跳动的程序员却怒斥那些拿低绩效的人&#xff1a; 为什么拿m-&#xff08;低绩效&#xff09;的人从来不反思自己垫底的原因&…

C++三部曲|C++核心思想

| 导语 C 的起源可以追溯到 40 年前&#xff0c;但它仍然是当今使用最广泛的编程语言之一&#xff0c;C发明人Bjarne Stroustrup 一开始没想到 C 会获得如此大的成功&#xff0c;他说&#xff1a;“C 的成功显然令人惊讶。我认为它的成功取决于其最初的设计目标&#xff0c;就是…

前端014_标签模块_修改功能

标签模块_修改功能 1、需求分析2、Mock 添加查询数据3、Mock 添加提交修改数据4、Api 调用接口回显数据5、提交修改后的数据6、验证1、需求分析 当点击 编辑 按钮后,弹出编辑窗口,并查询出标签信息渲染。修改后点击确定 提交修改数据。 2、Mock 添加查询数据 请求URL: /a…

在OpenCV中使用Canny边缘检测

边缘检测是非常常见和广泛使用的图像处理&#xff0c;对于许多不同的计算机视觉应用非常必要&#xff0c;如数据提取&#xff0c;图像分割&#xff0c;在更细粒度的特征提取和模式识别中。它降低了图像中的噪声和细节数量&#xff0c;但保留了图像的结构。 Python中的Canny边缘…

祁宁:社区问答是激荡企业高级智慧的头脑风暴 | 开发者说

在祁宁家里&#xff0c;有一套完整的赛车模拟器&#xff0c;他甚至还请人到国外代购了最新的 VR 设备。作为沉浸式赛车游戏发烧友&#xff0c;除了享受速度与激情带来的愉悦感&#xff0c;祁宁在玩的过程中更多的是思考如何将技术能力进行产品化的问题。 Answer.dev 就是将技术…

Studio Bot - 让 AI 帮我写 Android 代码

Google I/O 2023 不出所料&#xff0c;今年的 I/O 大会只突出了一个关键词 “AI”。Google 旗下的各类产品都成了其展示 AI 实力的舞台。连面向开发者的产品 Android Studio 也新增了 Studio bot 功能&#xff0c;希望通过 AI 帮助开发者更轻松地写代码&#xff1a; Studio Bot…

STM32F4_内部温度传感器

目录 1. 什么是温度传感器 2. 温度传感器简介 3. 库函数配置内部温度传感器 4. 实验程序 4.1 main.c 4.2 ADC.c 4.3 ADC.h 1. 什么是温度传感器 温度传感器是一种测量物体冷热程度的设备&#xff0c;以可读的方式通过电信号提供温度测量。比较常见的如热电偶温度传感器。…

越来越多的单身女性开始买房了

近日&#xff0c;越来越多的单身女性开始购买房产&#xff0c;这一现象引起了社会的广泛关注。 根据中国青年报社会调查中心联合问卷网对2006名受访者进行的一项调查显示&#xff0c;84.2%的受访者认为近几年身边单身女性购房的现象增多了&#xff0c;而93.9%的受访者支持单身女…