您的位置:首页 > 理论基础 > 计算机网络

矢量量化神经网络,自组织竞争神经网络,自组织映射网络

2016-03-29 17:51 507 查看
矢量量化神经网络   解决有监督的分类问题
[x,t] = iris_dataset;		% 加载数据,x为输入样本,t为期望输出
rng(0)
whos
ri=randperm(150);           % 划分训练与测试集
x1=x(:,ri(1:50));
t1=t(:,ri(1:50));
x2=x(:,ri(51:150));
t2=t(:,ri(51:150));
net = lvqnet(20);			% 创建网络进行训练  默认 20竞争神经元个数0.01学习率'learnlv1'学习函数
net = train(net,x1,t1);
y = net(x2);				% 测试
yy=vec2ind(y);
ty=vec2ind(t2);
sum(yy==ty)/length(yy)

自组织竞争神经网络 解决分类/聚类问题

竞争神经网络
%% 清理
clear,clc
close all
%% 样本数据
x0=[4.1,1.8,0.5,2.9,4.0,0.6,3.8,4.3,3.2,1.0,3.0,3.6,3.8,3.7,3.7,8.6,9.1,...
7.5,8.1,9.0,6.9,8.6,8.5,9.6,10.0,9.3,6.9,6.4,6.7,8.7;...
8.1,5.8,8.0,5.2,7.1,7.3,8.1,6.0,7.2,8.3,7.4,7.8,7.0,6.4,8.0,...
3.5,2.9,3.8,3.9,2.6,4.0,2.9,3.2,4.9,3.5,3.3,5.5,5.0,4.4,4.3];
%% 建立竞争网络,两个类别
net = competlayer(2);
%% 训练
net.trainParam.epochs=400;  %最大的训练步数
tic
net=train(net,x0);
toc
%% 计算结果
y=net(x0);
calsses = vec2ind(y);
fprintf('分类结果\n');
disp(calsses)
view(net)

自组织映射网络  输出层引入拓扑结构
% mykohonen.m

%% 清空环境变量
clc,clear
close all

%% 样本数据
x0=[4.1,1.8,0.5,2.9,4.0,0.6,3.8,4.3,3.2,1.0,3.0,3.6,3.8,3.7,3.7,8.6,9.1,...
7.5,8.1,9.0,6.9,8.6,8.5,9.6,10.0,9.3,6.9,6.4,6.7,8.7;...
8.1,5.8,8.0,5.2,7.1,7.3,8.1,6.0,7.2,8.3,7.4,7.8,7.0,6.4,8.0,...
3.5,2.9,3.8,3.9,2.6,4.0,2.9,3.2,4.9,3.5,3.3,5.5,5.0,4.4,4.3];

%数据归一化
[x,m_x]=mapminmax(x0);
%% 网络构建
net = selforgmap([2 2]);		% 创建自组织映射网络  分2x2=4类
net.trainParam.coverSteps=200;
net.trainParam.initNeighbor=1;
net = train(net,x);
y = net(x);
Index = vec2ind(y)
%% 显示
x1=x0(:,Index==1);
x2=x0(:,Index==2);
x3=x0(:,Index==3);
x4=x0(:,Index==4);
plot(x1(1,:),x1(2,:),'ro');hold on
plot(x2(1,:),x2(2,:),'k*');
plot(x3(1,:),x3(2,:),'b>');
plot(x4(1,:),x4(2,:),'mp');
title('聚类结果')
legend('类别1','类别2','类别3','类别4')
% legend('类别1','类别2')
set(gcf,'color','w')
box on
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: