matlab中函数SOFM在神经网络方面的使用方法

示例一:

%%(1)画出3*2栅格型SOFM的特征映射图
%T8.6
pos=gridtop(3,2);
plotsom(pos)


%%(2)创建和训练SOFM神经网络的MATLAB程序设计
%Example81Tr
clear all;

%创建SOFM网络
net=newsom([0 2;0 1],[3 2],'gridtop');

%定义输入向量
P=[0.1 0.3 1.2 1.1 1.8 1.7 0.1 0.3 1.2 1.1 1.8 1.7; 0.2 0.1 0.3 0.1 0.3 0.2 0.8 0.8 0.9 0.9 0.7 0.8];

%绘制输入向量
plot(P(1,:), P(2,:), '.g', 'markersize', 20);

%训练SOFM网络
net.trainParam.epochs=100;     %设置训练的最大步长
net=train(net,P);

%绘制训练后的SOFM神经网络特征映射图
hold on;
plotsom(net.iw{1,1}, net.layers{1}.distances);
hold off

%存储训练后的SOFM神经网络
save net81 net;

%%(3)SOFM神经网络的MATLAB仿真程序设计
%Example81Sim
clear all
%加载训练好的SOFM网络
load net81 net;

%定义输入向量
P=[0.1 0.3 1.2 1.1 1.8 1.7 0.1 0.3 1.2 1.1 1.8 1.7; 0.2 0.1 0.3 0.1 0.3 0.2 0.8 0.8 0.9 0.9 0.7 0.8];

%网络仿真
y=sim(net,P);
yc=vec2ind(y)         %输出仿真结果

示例二:

% 利用二维自组织网络对样本数据进行分类
%
close all
clf reset
figure(gcf);
echo on
clc
% NEWSOM 创建自组织网络
% TRAIN 对自组织网络进行训练
% SIM 对自组织网络进行仿真
pause
clc
% 随机产生样本数据 P
P=rands(2,500);
pause
clc
% 画第一幅图:样本数据分布图
plot(P(1,:),P(2,:),'*');
axis([-1.2 1.2 -1.2 1.2]);
title('Input data');
pause
clc
% 建立自组织网络
% 欲将样本数据分为20类,因此网络的竞争层由20个二维分布的神经元构成
net=newsom([-1 1;-1 1],[4 5]);
pause
clc
% 画第二幅图:神经元分布的拓扑结构图
figure;
plotsom(net.layers{1}.positions);
pause
clc
% 画第三幅图:网络初始状态下神经元权值的分布图
figure;
plotsom(net.IW{1,1},net.layers{1}.distances);
pause
clc
% 对网络进行训练
net.trainParam.epochs=1;
net=train(net,P);
pause
clc
% 画第四幅图:画出网络神经元权值,也就是每类样本数据的聚类中心
figure;
plotsom(net.IW{1,1},net.layers{1}.distances);
pause
clc
% 画第五幅图:画出再次训练后的神经元权值
net.trainParam.epochs=3;
net=train(net,P);
figure;
plotsom(net.IW{1,1},net.layers{1}.distances);
pause
clc
% 利用一组新的输入数据检验网络性能
a=sim(net,[0.1;-0.5])
echo off

示例三:

% 利用一维自组织网络对样本数据进行分类
%
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


来源 http://hi.baidu.com/ssrstt/item/f0bf90a8dace997b6dd455d3


  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值