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

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

摘要:

基于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) % 调用网络
相关文章
|
2天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于yolov4深度学习网络的公共场所人流密度检测系统matlab仿真,带GUI界面
本项目使用 MATLAB 2022a 进行 YOLOv4 算法仿真,实现公共场所人流密度检测。通过卷积神经网络提取图像特征,将图像划分为多个网格进行目标检测和识别,最终计算人流密度。核心程序包括图像和视频读取、处理和显示功能。仿真结果展示了算法的有效性和准确性。
48 31
|
2天前
|
算法
基于Adaboost模型的数据预测和分类matlab仿真
AdaBoost(Adaptive Boosting)是一种由Yoav Freund和Robert Schapire于1995年提出的集成学习方法,旨在通过迭代训练多个弱分类器并赋予分类效果好的弱分类器更高权重,最终构建一个强分类器。该方法通过逐步调整样本权重,使算法更关注前一轮中被误分类的样本,从而逐步优化模型。示例代码在MATLAB 2022A版本中运行,展示了随着弱分类器数量增加,分类错误率的变化及测试数据的分类结果。
|
21天前
|
机器学习/深度学习 算法 Serverless
基于WOA-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM
本项目利用鲸鱼优化算法(WOA)优化支持向量机(SVM)参数,针对乳腺癌早期诊断问题,通过MATLAB 2022a实现。核心代码包括参数初始化、目标函数计算、位置更新等步骤,并附有详细中文注释及操作视频。实验结果显示,WOA-SVM在提高分类精度和泛化能力方面表现出色,为乳腺癌的早期诊断提供了有效的技术支持。
|
11天前
|
机器学习/深度学习 算法 Python
基于BP神经网络的金融序列预测matlab仿真
本项目基于BP神经网络实现金融序列预测,使用MATLAB2022A版本进行开发与测试。通过构建多层前馈神经网络模型,利用历史金融数据训练模型,实现对未来金融时间序列如股票价格、汇率等的预测,并展示了预测误差及训练曲线。
|
9天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如"How are you"、"I am fine"、"I love you"等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
12天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
18天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化CNN-GRU网络的数据分类识别算法matlab仿真
本项目展示了使用MATLAB2022a实现的贝叶斯优化、CNN和GRU算法优化效果。优化前后对比显著,完整代码附带中文注释及操作视频。贝叶斯优化适用于黑盒函数,CNN用于时间序列特征提取,GRU改进了RNN的长序列处理能力。
|
28天前
|
机器学习/深度学习 算法 关系型数据库
基于PSO-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM
本项目展示了利用粒子群优化(PSO)算法优化支持向量机(SVM)参数的过程,提高了分类准确性和泛化能力。包括无水印的算法运行效果预览、Matlab2022a环境下的实现、核心代码及详细注释、操作视频,以及对PSO和SVM理论的概述。PSO-SVM结合了PSO的全局搜索能力和SVM的分类优势,特别适用于复杂数据集的分类任务,如乳腺癌诊断等。
|
1月前
|
安全 算法 网络安全
量子计算与网络安全:保护数据的新方法
量子计算的崛起为网络安全带来了新的挑战和机遇。本文介绍了量子计算的基本原理,重点探讨了量子加密技术,如量子密钥分发(QKD)和量子签名,这些技术利用量子物理的特性,提供更高的安全性和可扩展性。未来,量子加密将在金融、政府通信等领域发挥重要作用,但仍需克服量子硬件不稳定性和算法优化等挑战。
|
1月前
|
算法 数据挖掘 数据安全/隐私保护
基于FCM模糊聚类算法的图像分割matlab仿真
本项目展示了基于模糊C均值(FCM)算法的图像分割技术。算法运行效果良好,无水印。使用MATLAB 2022a开发,提供完整代码及中文注释,附带操作步骤视频。FCM算法通过隶属度矩阵和聚类中心矩阵实现图像分割,适用于灰度和彩色图像,广泛应用于医学影像、遥感图像等领域。

热门文章

最新文章

下一篇
DataWorks