(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) % 调用网络
相关文章
- 数学建模暑期集训20:层次聚类法matlab+python
- matlab与C++以.mat文件方式进行数据相互流动
- Matlab:成功解决The option is not valid. The options must be'double','native','default','omitnan', or'inc
- 智能优化算法——哈里斯鹰算法(Matlab代码实现)
- 含冰蓄冷空调的冷热电联供型微网多时间尺度优化调度(Matlab代码实现)
- 使用PSO优化的RBF进行数据预测回归(Matlab)
- 一种数据驱动的自动驾驶汽车前馈补偿器优化方法(Matlab代码实现)
- 滑动奇异频谱分析:数据驱动的非平稳信号分解工具(Matlab代码实现)
- 【分布式能源的选址与定容】基于非支配排序多目标遗传优化算法求解分布式能源的选址与定容(Matlab代码实现)
- 【状态估计】电力系统状态估计的虚假数据注入攻击建模与对策(Matlab代码实现)
- Matlab|基于时间序列预测的粒子群优化混合非线性回归和自回归技术的比较
- 基于改进多目标灰狼优化算法的考虑V2G技术的风、光、荷、储微网多目标日前优化调度研究(Matlab代码实现)
- 基于无人机的气象数据采集系统设计(Matlab代码实现)
- 【图像处理】图像的边缘检测(Matlab代码实现)
- 基于热传导矩阵(HCM)边缘检测方法在红外图像中的应用(Matlab代码实现)
- 【MATLAB】基于MATLAB实现灯光定位
- 【MATLAB】通信信号调制通用函数 — 低通滤波器
- matlab快速入门(27):数据导出
- 基于PSO优化的SVM数据预测算法matlab仿真
- m基于GA遗传优化的GRNN广义回归神经网络销售数据预测算法matlab仿真
- m基于ESN+BP神经网络的数据预测算法matlab仿真,测试数据为太阳黑子变化数据
- m基于GRNN广义回归神经网络的飞机发动机剩余寿命预测matlab仿真,训练集采用C-MAPSS数据集
- Matlab绘制幅值谱和相位谱
- MATLAB | 如何绘制这种带竖线散点的核密度图
- 基于小波变换的数据峰值检测matlab仿真
- Matlab Tips: 结构体递归式打印--Dump matlab struct content recursively