⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jingzhengceng.m

📁 利用神经网络竞争层给数据分类
💻 M
字号:
% 利用竞争层网络对样本数据进行分类%本例中待分类的样本数据由nngenc函数随机产生,即P=nngenc(range,class,num,std);   其中,参数class表示样本数据的类别个数。然后利用newc函数%建立竞争层网络:net=newc(range,class,klr,clr);       其中,class是数据类别个数,也是竞争层神经元个数;klr和clr 分别是网络的权值学习速率%和阈值学习速率。竞争层网络在训练时不需要目标输出,网络通过对数据分布特性的学习,自动地将数据划分为指定类别数。%网络训练语句如下(其中,默认的训练函数为trainr):net=train(net,P);%在对训练好的网络进行仿真时,网络的输出为单值矢量组,为了观察方便,一般要将单值矢量组转化为下标矩阵的形式:% Y=sim(net,P);  Y1=vec2ind(Y);%本例完整的MATLAB程序如下:close allclf resetfigure(gcf);echo onclc% NEWC---创建竞争层网络% TRAIN---对竞争层网络进行训练% SIM---对竞争层网络进行仿真pauseclc% 产生样本数据P,P中包括三类共30个二维矢量range=[-1 1;-1 1];   % 样本数据取值范围class=3;             % 样本数据类别数num=10;              % 每类样本数据的个数std=0.1;             % 每类样本数据的方差P=nngenc(range,class,num,std);pauseclc% 画第一幅图:样本数据分布图plot(P(1,:),P(2,:),'*','markersize',5);axis([-1.5 1.5 -1.5 1.5]);pauseclc% 建立竞争层网络(由于样本数据分为三类,因此竞争层由三个神经元构成)klr=0.1;     % 权值学习速率clr=0.01;    % 阈值学习速率net=newc(range,class,klr,clr);pauseclc% 对网络进行训练net.trainParam.epochs=5;  %训练过程每五步显示一次net=train(net,P); pauseclc%在第一幅图上画竞争层神经元权值,也就是每类样本的聚类中心w=net.IW{1};hold on;plot(w(:,1),w(:,2),'ob');title('Input data & Weights');pauseclc%利用原始样本数据对网络进行仿真Y=sim(net,P);Y1=vec2ind(Y)pauseclc% 画第二幅图:用不同符号标注数据分类结果figure;for i=1:30    if Y1(i)==1        plot(P(1,i),P(2,i),'*','markersize',5);    elseif Y1(i)==2        plot(P(1,i),P(2,i),'+','markersize',5);    else        plot(P(1,i),P(2,i),'x','markersize',5);    end    hold on;end    axis([-1.5 1.5 -1.5 1.5]);    title('class 1:*  class 2:+   class 3:x');pauseclc%利用一组新的输入数据检验网络性能p=[-0.4 -0.4;-0.1 0.9];y=sim(net,p);y1=vec2ind(y)echo off% 程序运行结果如图所示。在图中,待分类的样本数据用星号标注,网络训练完毕后的竞争层神经元%权值由圆圈标注。在图中,已经划分好的三类数据分别用星号、加号和“x”符号标注。% (a) 待分类样本的数据和竞争层神经元权值           (b) 网络分类结果

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -