当前位置: 首页 > news >正文

(Matlab)使用竞争神经网络实现数据聚类

目录

摘要:

参考文献:

1.竞争神经网路介绍:

2.仿真实验:

3.相关代码:


摘要:

基于Matalb平台,构建竞争神经网络模型,并实现无监督的数据聚类。

1.竞争神经网路介绍:

        竞争型神经网络是以无教师示教方式进行网络训练的一种神经网络。它的特点是能将输入数据中隐含的特征抽取出来,自动进行学习。网络通过自身训练,自动对输入模式进行分类。竞争型神经网络在结构上一般是由输入层和竞争层构成的两层网络。两层之间各神经元实现双向全连接,没有隐含层,有时竞争层各神经元之间还存在横向连接。

        在学习方法上,不是以网络的误差或能量函数的单调递减作为算法准则,而是依靠神经元之间的兴奋、协调、抑制、竞争的作用来进行信息处理,指导网络的学习与工作。长期以来,一些研究者提出了基于以上竞争型神经网络模型的许多改进方法,使神经网络模型的功能和性能得到很大提高,这些都为神经网络技术应用于数据挖掘奠定了一定的基础。然而其进一步的发展却受到许多缺陷的限制,主要表现在:

        第一,输入模式过于臃肿和训练时间过于漫长,影响了神经网络的训练速度和训练效果。为了解决神经网络的训练规模归于庞大的缺点,有学者利用粗糙集理论对输入数据进行预处理,消除输入模式的冗余属性,从而简化了神经网络的训练规模。但是粗糙集理论的缺点是只能处理离散化的数据,而对连续输入属性无能为力。而在现实的数据库中,大部分是连续性数据或是连续性和离散性相混合的数据,因此在数据处理前必须对数据进行离散化处理,这极大地限制了粗糙集理论在聚类分析中的应用范围。

        第二,竞争型神经网络存在“死点”问题,某些神经元在竞争中可能始终未能获胜而成为“死神经元”,不仅造成神经元的浪费,而且造成训练误差偏大,无法达到训练误差的精度要求,不能很好完成它所担负的聚类或分类任务。

2.仿真实验:

        首先生成需要聚类的数据,共80个样本,每个样本有2个特征值,所有样本在二维空间中的分布如下:

        然后,设置网路神经元的个数,这里设置神经元个数为8个,首先将网路的权重向量至于所有聚类数据的中心,然后开始训练竞争神经网络:

        训练完成后,竞争神经网络的权重参数分布在对应的聚类中心,此时完成数据的聚类。如下图所示

        输入一个样本,即可查询对应的分类情况,比如输入样本特征值为[0,0.2],则网络输出其对应的分类:

3.相关代码

参考文献:

本文仅展示部分代码,需要全部代码点这里:🍞正在为您运送作品详情

clc;
clear;
%% 生成数据
bounds = [0 1; 0 1];   % 数据生成范围限制
clusters = 8;          % 设置分类类数
points = 10;           
std_dev = 0.05;        
x = nngenc(bounds,clusters,points,std_dev); % 产生数据
% 查看生成数据的分布情况
figure(1);
plot(x(1,:),x(2,:),'+r');
title('生成数据的分布情况');
xlabel('横坐标');
ylabel('纵坐标');
%% 构建竞争神经网络模型
% 此处 COMPETLAYER 接受两个参数,即神经元数量和学习率。
% 我们可以配置网络输入(通常由 TRAIN 自动完成),并绘制初始权重向量以查看其分类尝试过程。
% 对权重向量 (o) 进行训练,使它们出现在输入向量 (+) 的聚类的中心。
epochs = 8; % 设置网络神经元个数
[net,circles] = Build_Net(clusters,x,epochs);
%% 查看分类情况
w = net.IW{1};
figure(3)
plot(x(1,:),x(2,:),'+r');
hold on 
plot(w(:,1),w(:,2),'ob');
hold off
title('训练后网络的权重向量分布情况(蓝色的点)');
xlabel('横坐标');
ylabel('纵坐标');
%% 使用训练后的网络查询数据的类别
x1 = [0; 0.2]; % 查询这个数据
y = net(x1) % 调用网络

相关文章:

  • Redis过期删除策略和内存淘汰策略
  • 3.获取元素
  • springboot+教学工作量管理系统 毕业设计-附源码221541
  • Spring常见问题解决 - 对象参数校验失效
  • 百亿积木市场,能跑出一个“中国乐高”?
  • k8s之Pod
  • SpringBoot_11_整合MyBatis
  • 框架阶段七:SpringSecurity
  • 分布式机器学习---数据与模型划分
  • HDFS、YARN、MapReduce概述及三者之间的关系
  • 商家入驻商城 多商户商城 宝塔安装搭建教程 说明 小程序、h5、pc端
  • 中海庭罗凯:Prometheus监控Argo Workflow云原生工作流的方法
  • JMeter进行并发测试参数化
  • lotus 1.17.1-rc3 calibnet Boost
  • priority_queue(优先级队列的模拟使用和实现)
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • CentOS7简单部署NFS
  • CSS 提示工具(Tooltip)
  • eclipse(luna)创建web工程
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • es的写入过程
  • ES学习笔记(12)--Symbol
  • HTML-表单
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Javascript基础之Array数组API
  • Java的Interrupt与线程中断
  • js面向对象
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Object.assign方法不能实现深复制
  • redis学习笔记(三):列表、集合、有序集合
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • unity如何实现一个固定宽度的orthagraphic相机
  • 动态规划入门(以爬楼梯为例)
  • 翻译--Thinking in React
  • 码农张的Bug人生 - 初来乍到
  • 容器服务kubernetes弹性伸缩高级用法
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • k8s使用glusterfs实现动态持久化存储
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • # 数论-逆元
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (1)(1.13) SiK无线电高级配置(五)
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (规划)24届春招和25届暑假实习路线准备规划
  • (三分钟)速览传统边缘检测算子
  • (十六)串口UART
  • (图)IntelliTrace Tools 跟踪云端程序
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • **PHP二维数组遍历时同时赋值
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .net core 依赖注入的基本用发
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET 简介:跨平台、开源、高性能的开发平台