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('权重平面')

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MyBatisPlus中的selectById方法

今天在编代码时用selectById方法时,不小心写错了,参数传了个实体类。本来应该传id的。 但是没报错,于是进入源码看了一下。 这是源码 里面的参数是一个序列化类型的。 后面发现我的实体类实现了这个接口所以能才能传进去。不实现就传不了 我…

SSL/TLS握手

文章目录 SSL/TLSTLS历史发展层次结构SSL/TLS握手协议TLS1.2 Vs TLS1.3 安全通信协议是一类用于保护计算机网络上数据传输安全的协议。这些协议通过加密、身份验证和数据完整性机制来防止数据被窃听、篡改或伪造。以下是一些主要的安全通信协议:SSL/TLS, IPsec, SSH…

idea配置本地maven

软件名地址链接说明MavenMaven – Download Apache Maven依赖管理 下载bin.zip 环境变量 测试安装 修改配置文件 本地依赖存储位置 新建文件夹 修改配置 国内镜像源 <mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>ali…

大电流一体成型电感CSEB1350系列,助力实现DC-DC转换器小尺寸、高效率

DC-DC转换器 , 转换器 , 科达嘉 DC-DC转换器作为一种电压转换装置&#xff0c;在电子产品、电源系统、工业控制、新能源等领域广泛应用。。。 DC-DC转换器作为一种电压转换装置&#xff0c;在电子产品、电源系统、工业控制、新能源等领域广泛应用。随着各行业用户对DC-DC转换器…

pytorch神经网络训练(VGG-16)

VGG-16 导包 import torchimport torch.nn as nnimport torch.optim as optimimport torchvisionfrom torchvision import datasets, transformsfrom torch.utils.data import DataLoaderimport matplotlib.pyplot as plt 数据预处理和增强 transform transforms.Compose(…

Flutter-实现头像叠加动画效果

实现头像叠加动画效果 在这篇文章中&#xff0c;我们将介绍如何使用 Flutter 实现一个带有透明度渐变效果和过渡动画的头像叠加列表。通过这种效果&#xff0c;可以在图片切换时实现平滑的动画&#xff0c;使 UI 更加生动和吸引人。 需求 我们的目标是实现一个头像叠加列表&…

基于顺序存储的环形队列算法库构建

学习贺利坚老师基于数组的环形队列 数据结构之自建算法库——顺序环形队列_下空队列q中依次入队列数据元素abc-CSDN博客文章浏览阅读5.2k次&#xff0c;点赞6次&#xff0c;收藏6次。本文针对数据结构基础系列网络课程(3)&#xff1a;栈和队列中第9课时环形队列的存储及基本操…

基于ESP8266串口WIFI模块ESP-01S在Station模式(即接收无线信号( WiFi))下实现STC单片机与手机端网路串口助手相互通信功能

基于ESP8266串口WIFI模块ESP-01S在Station模式(即接收无线信号( WiFi))下实现STC单片机与手机端网路串口助手相互通信功能 ESP8266_01S引脚功能图ESP8266_01S原理图ESP8266_01S尺寸图检验工作1、USB-TTL串口工具(推荐使用搭载CP2102芯片的安信可USB-T1串口)与ESP8266_01S…

会声会影2024永久破解和谐版下载 包含激活码序列号

亲爱的创作伙伴们&#xff0c;今天我要分享一个让我的影视编辑生活大放异彩的神器——会声会影2024破解版本&#xff01;&#x1f389;&#x1f31f; &#x1f308;**功能全面升级**&#xff1a;作为一款专业的视频编辑软件&#xff0c;会声会影2024破解版本不仅继承了之前版本…

KEITHLEY吉时利24611kW 脈沖模式 SourceMeter 手侧

KEITHLEY吉时利24611kW 脈沖模式 SourceMeter 手侧

【vue3|第13期】深入了解Vue3生命周期:管理组件的诞生、成长与消亡

日期&#xff1a;2024年6月22日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…

【大数据 复习】第8章 Hadoop架构再探讨

一、概念 1.Hadoop1.0的核心组件&#xff08;仅指MapReduce和HDFS&#xff0c;不包括Hadoop生态系统内的Pig、Hive、HBase等其他组件&#xff09;&#xff0c;主要存在以下不足&#xff1a; &#xff08;1&#xff09;抽象层次低&#xff0c;需人工编码 &#xff08;2&#xf…

【Linux】基础IO_4

文章目录 六、基础I/O4. 动静态库 未完待续 六、基础I/O 4. 动静态库 既然我们能够成功创建静态库了&#xff0c;接下来我们将这个代码打包成动态库&#xff1a; shared: 表示生成共享库格式 fPIC&#xff1a;产生位置无关码(position independent code) 动态库库名规则&…

Swift 中的动态数组

Swift 的 Array 类型是一种强大而灵活的集合类型&#xff0c;可以根据需要自动扩展或缩减其容量。 动态数组的基本概念 Swift 中的数组是基于动态数组&#xff08;dynamic array&#xff09;的概念实现的。动态数组能够根据需要自动调整其容量&#xff0c;以容纳新增的元素&a…

第一题(伏羲六十四卦)

题目&#xff1a; 首先伏羲64卦解密 再用base64解密即可

基于SpringBoot+Vue教材订购系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

Android 14 权限等级剖析

Android 14 权限等级剖析 Android 14 引入了新的权限等级&#xff0c;为应用程序访问敏感信息和功能提供了更细粒度的控制。了解这些新的权限等级及其应用场景对于开发人员至关重要。 1. 概述 Android 一直以来都使用权限机制来控制应用程序对系统资源和用户数据的访问。随着…

Vue81-独享路由守卫

一、 独享路由守卫的定义 当只有某个特定的路由需要做校验的时候&#xff0c;可以在改路由组件规则的地方单独配置独属于改组件的路由守卫。 二、示例 1、需求 系统只在进入新闻路由页面的时候做校验。 2、代码实现 注意&#xff1a; 独享路由守卫&#xff0c;只有前置路由守…

Unity Apple Vision Pro 开发(三):visionOS 应用形态

文章目录 &#x1f4d5;教程说明&#x1f4d5;常用名词解释&#x1f4d5;visionOS 空间类型⭐Shared Space 共享空间⭐Full Space/Immersive Space 独占空间 &#x1f4d5;visionOS 渲染框架&#x1f4d5;Unity 开发 visionOS 应用的不同模式⭐**窗口模式**⭐VR 模式⭐MR 模式 …

基于matlab的高斯滤波与图像去噪

1 高斯滤波原理 1.1 原理 高斯滤波是一种线性平滑滤波技术&#xff0c;主要用于消除图像中的高斯噪声。它的工作原理可以理解为对整幅图像进行加权平均的过程&#xff0c;即每个像素点的值都由其本身和邻域内的其他像素值经过加权平均后得到。 高斯滤波实质上是一种信号的滤…