46、基于自组织映射神经网络的鸢尾花聚类(matlab)

1、自组织映射神经网络的鸢尾花聚类的原理及流程

自组织映射神经网络(Self-Organizing Map, SOM)是一种用于聚类和数据可视化的人工神经网络模型。在鸢尾花聚类中,SOM 可以用来将鸢尾花数据集分成不同的类别,同时保留数据间的拓扑关系。

SOM的原理是通过竞争学习和自组织的过程,将高维输入空间映射到低维的神经网络结构上。在鸢尾花聚类中,SOM会根据鸢尾花的特征(如花萼长度和宽度,花瓣长度和宽度)将其映射到一个二维的网络中,使得相似的鸢尾花样本被映射到相邻的神经元上。

流程如下:

  1. 初始化 SOM 神经网络:确定神经网络的结构,设定神经元的初始权重。
  2. 随机选取一个鸢尾花样本作为输入,并计算该样本与神经元之间的距离。
  3. 竞争学习:选取距离最近的神经元为胜者,同时调整周围神经元的权重,使得它们也向该样本靠拢。
  4. 更新权重:根据竞争学习的结果,调整神经元的权重。
  5. 重复步骤 2-4 直至达到收敛条件。

经过上述流程,SOM会将鸢尾花样本映射到不同的神经元上,形成了聚类结果。同时,SOM的拓扑结构也能够让我们在二维空间中直观地看到各个类别的分布情况,从而实现了数据的可视化。

2、 基于自组织映射神经网络的鸢尾花聚类说明

1)问题说明

自组织映射神经网络以拓扑方式将鸢尾花聚类为各个类,提供对花类型的深入了解以及用于进一步分析的实用工具。

2)输入参数

每朵鸢尾花都用四个特征进行描述:萼片长度 (cm)/萼片宽度 (cm)/花瓣长度 (cm)/花瓣宽度 (cm)

 3)方案

构建一个将鸢尾花聚类成多个自然类的神经网络,以使相似的类分组在一起。

4)自组织映射特点

自组织映射 (SOM) 非常擅长创建分类。分类保留了关于哪些类与其他类最相似的拓扑信息。自组织映射可以创建为任何所需的详细程度级别。它们特别适合对存在于多个维度且具有复杂形状的相连特征空间的数据进行聚类。 (SOM) 非常擅长创建分类。分类保留了关于哪些类与其他类最相似的拓扑信息。自组织映射可以创建为任何所需的详细程度级别。它们特别适合对存在于多个维度且具有复杂形状的相连特征空间的数据进行聚类。

3、实验数据集

1)说明

将数据组织成输入矩阵 X,为 SOM 设置聚类问题数据
输入矩阵的每个第 i 列具有四个元素,表示在一朵花上获取的四个测量值。

加载数据集代码

x = iris_dataset;
size(x)ans =4   150

 4、使用神经网络进行聚类

1)使用神经网络进行聚类

说明:使用 selforgmap 创建自组织映射,通过选择每个层维度中的神经元数量来对样本进行所需详细程度的分类。
尝试具有以 8×8 六边形网格排列的 64 个神经元的二维层。使用更多神经元可以获得更多细节,而使用更多维度则可对更复杂特征空间的拓扑进行建模。

代码

net = selforgmap([8 8]);
view(net)

视图效果

 2)使用 train 优化网络

说明:神经网络训练工具显示正在接受训练的网络和用于训练该网络的算法。

代码

[net,tr] = train(net,x);

试图效果

 3)使用自组织映射计算每个训练输入的类向量

说明:这些分类涵盖了已知花朵所填充的特征空间,它们现在可用于对新花朵进行相应分类。网络输出将是一个 64×150 矩阵,其中每个第 i 列表示第 i 个输入向量(其第 j 个元素为 1)的第 j 个聚类。
函数 vec2ind 针对每个向量返回输出为 1 的神经元的索引。对于由 64 个神经元表示的 64 个聚类,索引值范围在 1 到 64 之间。

代码

y = net(x);
cluster_index = vec2ind(y);

5、结果显示

1)自组织映射拓扑

说明:使用 plotsomtop 绘制位于 8×8 六边形网格中的 64 个神经元的自组织映射拓扑。
每个神经元都已经过学习,可代表不同的花类,相邻的神经元通常代表相似的类。

代码

figure(1)
plotsomtop(net)
title('自组织映射拓扑')

视图效果

2) 每个类中的花朵数量

说明:使用 plotsomhits 计算每朵花的类,并显示每个类中的花朵数量。
具有大量命中的神经元区域所表示的类代表相似的填充度高的特征空间区域。而命中较少的区域表示填充稀疏的特征空间区域。

代码

figure(2)
plotsomhits(net,x)
title('花数量')

视图效果

 3)邻点通常用于对相似样本进行分类

说明:使用 plotsomnc 显示神经元邻点连接。邻点通常用于对相似样本进行分类。

代码

figure(3)
plotsomnc(net)
title('神经元邻点连接')

视图效果

4) 显示每个神经元的类与其邻点的距离

说明:plotsomnd 显示每个神经元的类与其邻点的距离(以欧几里德距离表示)。
浅色连接表示输入空间的高度连接区域。而深色连接表示的类代表相距很远且相互之间很少或没有花朵的特征空间区域。

代码

figure(4)
plotsomnd(net)
title('神经元类与邻点距离')

视图效果

5) 显示四个输入特征中每个特征的权重平面

说明:使用 plotsomplanes 显示四个输入特征中每个特征的权重平面。
权重可视化,这些权重将每个输入连接到以 8×8 六边形网格排列的 64 个神经元中的每一个。深色代表较大权重。如果两个输入具有相似的权重平面(它们的颜色梯度可能相同或相反),则表明它们高度相关。

代码

figure(5)
plotsomplanes(net)
title('权重平面')

视图效果

6、总结 

在 MATLAB 中实现基于自组织映射神经网络的鸢尾花聚类可以按照如下步骤进行:

  1. 准备数据:加载鸢尾花数据集,并对数据进行标准化处理。

  2. 初始化 SOM 神经网络:确定神经网络的结构,包括输入层和输出层的神经元数量,以及神经元的初始权重。

  3. 竞争学习:随机选取一个鸢尾花样本作为输入,并计算该样本与输出层神经元之间的距离,找到距离最近的胜者神经元。

  4. 更新权重:根据胜者神经元和其邻近神经元的位置关系,调整神经元的权重。

  5. 重复步骤 3 和 4 直至达到收敛条件,即神经网络的权重不再发生显著变化。

  6. 聚类结果展示:根据训练好的神经网络,将鸢尾花数据样本映射到相应的神经元上,从而得到聚类结果。

具体实现中,可以使用 MATLAB 的神经网络工具箱中的 selforgmaptrain 和 sim 等函数来构建和训练自组织映射神经网络。最后,利用可视化工具如散点图或热力图等方法,展示不同类别鸢尾花在自组织映射网络上的分布情况,进一步分析聚类结果。

7、源代码

代码

%% 基于自组织映射神经网络的鸢尾花聚类
%说明:自组织映射神经网络以拓扑方式将鸢尾花聚类为各个类,提供对花类型的深入了解以及用于进一步分析的实用工具。
%每朵鸢尾花都用四个特征进行描述:萼片长度 (cm)/萼片宽度 (cm)/花瓣长度 (cm)/花瓣宽度 (cm)
%试构建一个将鸢尾花聚类成多个自然类的神经网络,以使相似的类分组在一起。
%自组织映射 (SOM) 非常擅长创建分类。分类保留了关于哪些类与其他类最相似的拓扑信息。自组织映射可以创建为任何所需的详细程度级别。它们特别适合对存在于多个维度且具有复杂形状的相连特征空间的数据进行聚类。
%% 数据集
%将数据组织成输入矩阵 X,为 SOM 设置聚类问题数据
%输入矩阵的每个第 i 列具有四个元素,表示在一朵花上获取的四个测量值。
%加载数据集
x = iris_dataset;
size(x)
%% 使用神经网络进行聚类
%使用神经网络进行聚类
%使用 selforgmap 创建自组织映射,通过选择每个层维度中的神经元数量来对样本进行所需详细程度的分类。
%尝试具有以 8×8 六边形网格排列的 64 个神经元的二维层。使用更多神经元可以获得更多细节,而使用更多维度则可对更复杂特征空间的拓扑进行建模。
net = selforgmap([8 8]);
view(net)
%使用 train 优化网络
%神经网络训练工具显示正在接受训练的网络和用于训练该网络的算法。
[net,tr] = train(net,x);
%使用自组织映射计算每个训练输入的类向量。
%这些分类涵盖了已知花朵所填充的特征空间,它们现在可用于对新花朵进行相应分类。网络输出将是一个 64×150 矩阵,其中每个第 i 列表示第 i 个输入向量(其第 j 个元素为 1)的第 j 个聚类。
%函数 vec2ind 针对每个向量返回输出为 1 的神经元的索引。对于由 64 个神经元表示的 64 个聚类,索引值范围在 1 到 64 之间。
y = net(x);
cluster_index = vec2ind(y);
%使用 plotsomtop 绘制位于 8×8 六边形网格中的 64 个神经元的自组织映射拓扑。
%每个神经元都已经过学习,可代表不同的花类,相邻的神经元通常代表相似的类。
figure(1)
plotsomtop(net)
title('自组织映射拓扑')
%使用 plotsomhits 计算每朵花的类,并显示每个类中的花朵数量。
%具有大量命中的神经元区域所表示的类代表相似的填充度高的特征空间区域。而命中较少的区域表示填充稀疏的特征空间区域。
figure(2)
plotsomhits(net,x)
title('花数量')
%使用 plotsomnc 显示神经元邻点连接。邻点通常用于对相似样本进行分类。
figure(3)
plotsomnc(net)
title('神经元邻点连接')
%plotsomnd 显示每个神经元的类与其邻点的距离(以欧几里德距离表示)。
%浅色连接表示输入空间的高度连接区域。而深色连接表示的类代表相距很远且相互之间很少或没有花朵的特征空间区域。
figure(4)
plotsomnd(net)
title('神经元类与邻点距离')
%使用 plotsomplanes 显示四个输入特征中每个特征的权重平面。
%权重可视化,这些权重将每个输入连接到以 8×8 六边形网格排列的 64 个神经元中的每一个。深色代表较大权重。如果两个输入具有相似的权重平面(它们的颜色梯度可能相同或相反),则表明它们高度相关。
figure(5)
plotsomplanes(net)
title('权重平面')

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

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

相关文章

动态规划——买卖股票的最佳时机含冷冻期

1、题目链接 leetcode 309. 买卖股票的最佳时机含冷冻期 2、题目分析 该题有我们可以定义三种状态,买入状态,可交易状态 ,冷冻期状态 我们可以建立一个n*3的二维数组来表示这三种状态: 根据这个图可以看出, 可以从…

不到3毛钱的SOT23和SOT89封装18V耐压低功耗高PSRR高精度LDO稳压芯片ME6231电流0.5A电压3.3V和1.8V

前言 SOT23-5封装ME6231外观和丝印 一款国产LDO,某些场合,要把1117扔了吧,SOT23封装,虽然不是最小,但也是够小的了。 参考价格:约0.25元 概述 ME6231 系列是以 CMOS 工艺制造的 18V 耐压、低功耗、高 PSR…

2024-06-23 操作系统实验5——模拟页式存储管理

文章目录 一、实验目的二、实验内容三、实验过程四、结果测试五、实验总结和说明 补录与分享本科实验,以示纪念。 一、实验目的 通过编写和调试请求页式存储管理的模拟程序以加深对请求页式存储管理方案的理解。 二、实验内容 页面淘汰算法可采用FIFO置换算法&a…

从理论到实践掌握UML

统一建模语言(UML)是软件工程师用来设计软件系统的一种工具,就像是一套图形化的说明书。它让开发团队能够以图形化的方式来理解、设计和开发软件系统,比起用文字来描述,更加直观易懂。本文通过UML实例化的理论和实践相…

ROS | 常见故障排查

1.开启后发出一个WIFI WIFI名字:WHEELTEC接数字 安全密钥:dongguan 2.显示屏接口 USB接口接键鼠 3.远程登录命令 ssh -Y wheeltec192.168.0.100 是小车发出的WIFI的一个IP地址 4. 登录后确保IP地址 ip a 看一下 当前ip地址 倒数第四行-当前ip地址 1…

django学习入门系列之第三点《CSS基础样式介绍3》

文章目录 浮动什么是浮动浮动的特性清除浮动 往期回顾 浮动 什么是浮动 float属性用于创建浮动框,将其移动到一边,直到左边缘或右边缘触及包含块或另一个浮动框的边缘。 浮动的特性 浮动元素会脱离标准流(脱标) 浮动的元素会一行内显示并且元素顶部对…

51单片机STC89C52RC——6.3 定时器/计数器 实现计时功能(定时器+中断系统+LCD1602液晶显示器)

目录 目的/效果 一,STC单片机模块 二,定时器 中断系统LCD1602显示 三,创建Keil项目 四,代码 五,代码编译、下载到51单片机 ​ 目的/效果 用定时器实现系统中断,计时信息显示在LCD1602上。效果如下 …

springAI(一)

目录 一、spring AI 目的 二、spring AI 来源 三、sprig AI 是什么? 四、spring AI中的 概念 4.1、模型(Models) 4.2、提示(Prompts) 4.3、提示模板(Prompt Templates) 4.4、令 牌&#…

Axios-入门

介绍 Axios对原生Ajax进行了封装&#xff0c;简化书写&#xff0c;快速开发 官网&#xff1a;Axios中文文档 | Axios中文网 (axios-http.cn) 入门 1引入Axios的js文件 <script src"js/axios.js"></script> 2使用Axios发送请求&#xff0c;并获取响应…

系统架构师考点--嵌入式技术

​大家好。今天来总结一下嵌入式技术的考点。该考点分值3-5分&#xff0c;上午场选择题和下午场案例题都可能会考&#xff0c;但不是每年都考。 一、嵌入式微处理体系结构 冯诺依曼结构&#xff1a;传统计算机采用冯诺依曼(Von Neumann)结构&#xff0c;也称普林斯顿结构是一…

【代码随想录】【算法训练营】【第45天】 [198]打家劫舍 [213]打家劫舍II [337]打家劫舍III

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 45&#xff0c;周五&#xff0c;坚持不了一点~ 题目详情 [198] 打家劫舍 题目描述 198 打家劫舍 解题思路 前提&#xff1a; 思路&#xff1a; 重点&#xff1a; 代码实现 C语言 虚拟头…

中国科学院西北生态环境资源研究院联合多单位在《PNAS》发文:气候变暖对多年冻土区地上与地下生物量分布的影响

文章简介 论文名称&#xff1a;Changes in above-versus belowground biomass distribution in permafrost regions in response to climate warming&#xff08;气候变暖对多年冻土区地上与地下生物量分布的影响&#xff09; 第一作者及单位&#xff1a;贠汉伯&#xff08;研…

SCI一区TOP|双曲正弦余弦优化算法(SCHO)原理及实现【免费获取Matlab代码】

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2023年&#xff0c;J Bai受到双曲正弦余弦函数启发&#xff0c;提出了双曲正弦余弦优化算法&#xff08;Sinh Cosh optimizer, SCHO&#xff09;。 2.算法原理 2.1算法思想 SCHO灵感来源…

1panel + Pbootcms 设置伪静态规则

这里确保我们引用的样式路径是否是这样的&#xff0c;&#xff08;不然可能会设置了伪静态无法加载样式&#xff09; //这种格式在不开起伪静态是可以引入的&#xff0c;一旦开启就不行了,一定要在static 前面加上反斜杠 /<link rel"stylesheet" href"{pbo…

【数据分享】《中国法律年鉴》1987-2022

而今天要免费分享的数据就是1987-2022年间出版的《中国法律年鉴》并以多格式提供免费下载。&#xff08;无需分享朋友圈即可获取&#xff09; 数据介绍 自1987年起&#xff0c;《中国法律年鉴》作为一部全面记录中国法律发展进程的重要文献&#xff0c;见证了中国法治建设的每…

Linux服务升级:Almalinux 升级 WebCatlog桌面程序

目录 一、实验 1.环境 2.Almalinux 升级 WebCatlog桌面程序 二、问题 1.Ubuntu如何升级 WebCatlog桌面程序 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 系统版本软件IP备注Almalinux9.4 WebCatlog 192.168.204.150 &#xff08;2&#xff09;Termi…

odoo17 小变更4

odoo17 小变更4 1、代码中去除了访问私人地址权限,但翻译中均还有,怪不 model:res.groups,name:base.group_private_addresses msgid "Access to Private Addresses" msgstr "" 代码也查看了,的确没有了此权限组 --><record model="res.g…

大聪明教你学Java | 深入浅出聊 Kafka

前言 &#x1f34a;作者简介&#xff1a; 不肯过江东丶&#xff0c;一个来自二线城市的程序员&#xff0c;致力于用“猥琐”办法解决繁琐问题&#xff0c;让复杂的问题变得通俗易懂。 &#x1f34a;支持作者&#xff1a; 点赞&#x1f44d;、关注&#x1f496;、留言&#x1f4…

35 - 最后一个能进入巴士的人(高频 SQL 50 题基础版)

35 - 最后一个能进入巴士的人 -- sum(weight) over(order by turn) as total,根据turn升序&#xff0c;再求前面数的和 selectperson_name from(selectperson_name,sum(weight) over(order by turn) as totalfromQueue) new_Queue wheretotal<1000 order by total desc lim…

34 - 指定日期的产品价格(高频 SQL 50 题基础版)

34 - 指定日期的产品价格 -- row_number(行号) 生成连续的序号&#xff0c;不考虑分数相同 -- 在2019-08-16之前改的价格&#xff0c;使用最近一期的日期&#xff0c;没有在2019-08-16之前改的价格&#xff0c;默认价格为10 select t.product_id, t.new_price as price from (s…