MATLAB绘制出权值wv和阀值bv确定的误差曲面
源代码在线查看: matlab一维自组织网络对样本数据进行分类.txt
一维自组织网络对样本数据进行分类2007/06/02 22:03本例中待分类的样本数据是 100 个分布在 1/4 圆弧上的矢量点。样本数据 P 采用如下方式产生:
angles = 0: 0.5*pi/99: 0.5*pi;
P = [ cos(angles); sin(angles) ];
图1中绘出了样本数据的分布图。
利用 newsom 函数建立自组织网络:
net = newsom ([0 1; 0 1], [9]);
该网络的竞争层共有 9 个神经元,即数据的类别个数。自组织网络在训练时不需要目标输出,网络通过对数据分布特性的学习,自动地将数据划分为指定的类别数。下面是完整的 MATLAB 程序:
close all
clf reset
figure (gcf);
echo on
clc
% NEWSOM——创建自组织网络
% TRAIN——对自组织网络进行训练
% SIM——对自组织网络进行仿真
pause
clc
% 产生样本数据 P
angles = 0: 0.5*pi/99: 0.5*pi;
P = [ cos(angles); sin(angles) ];
pause
clc
% 画第一幅图:样本数据分布图
plot (P(1, :), P(2, :), '*');
axis ([0 1 0 1]);
title ('Input data');
pause
clc
% 建立自组织网络
% 欲将样本数据分为 9 类,因此网络的竞争层由 9 个神经元构成
net = newsom([0 1; 0 1],[9]);
pause
clc
% 对网络进行训练
net.trainParam.epochs = 10;
net = train (net, P);
pause
clc
% 画第二幅图:画出网络神经元权值,也就是每类样本数据的聚类中心
figure;
w = net.IW{1};
plotsom (net.IW{1,1},net.layers{1}.distances);
pause
clc
% 利用一组新的输入数据检验网络性能
a = sim (net, [0.6; 0.8])
echo off