(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) % 调用网络
相关文章
|
9月前
|
传感器 机器学习/深度学习 算法
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
542 1
|
9月前
|
传感器 机器学习/深度学习 算法
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
226 0
|
8月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
9月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
592 2
|
9月前
|
机器学习/深度学习 算法 安全
【图像处理】使用四树分割和直方图移动的可逆图像数据隐藏(Matlab代码实现)
【图像处理】使用四树分割和直方图移动的可逆图像数据隐藏(Matlab代码实现)
280 2
|
9月前
|
传感器 资源调度 算法
【数据融合】【状态估计】基于KF、UKF、EKF、PF、FKF、DKF卡尔曼滤波KF、无迹卡尔曼滤波UKF、拓展卡尔曼滤波数据融合研究(Matlab代码实现)
【数据融合】【状态估计】基于KF、UKF、EKF、PF、FKF、DKF卡尔曼滤波KF、无迹卡尔曼滤波UKF、拓展卡尔曼滤波数据融合研究(Matlab代码实现)
1027 0
|
9月前
|
算法 数据挖掘 区块链
基于遗传算法的多式联运车辆路径网络优优化研究(Matlab代码实现)
基于遗传算法的多式联运车辆路径网络优优化研究(Matlab代码实现)
264 2
|
8月前
|
机器学习/深度学习 数据采集 存储
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
1100 0
|
8月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
326 0
|
8月前
|
存储 监控 并行计算
目标跟踪中常用点迹航迹数据关联算法的MATLAB实现
通过计算测量点与预测点之间的欧氏距离,选择最近邻点进行关联,适用于单目标跟踪场景。

热门文章

最新文章