1D and 2D Self Organized Map

Neural Networks course (practical examples) © 2012 Primoz Potocnik

PROBLEM DESCRIPTION: Define 1-dimensional and 2-dimensional SOM networks to represent the 2-dimensional input space.

Contents

Define 4 clusters of input data

close all, clear all, clc, format compact

% number of samples of each cluster
K = 200;
% offset of classes
q = 1.1;
% define 4 clusters of input data
P = [rand(1,K)-q rand(1,K)+q rand(1,K)+q rand(1,K)-q;
     rand(1,K)+q rand(1,K)+q rand(1,K)-q rand(1,K)-q];
% plot clusters
plot(P(1,:),P(2,:),'g.')
hold on
grid on

Create and train 1D-SOM

% SOM parameters
dimensions   = [100];
coverSteps   = 100;
initNeighbor = 10;
topologyFcn  = 'gridtop';
distanceFcn  = 'linkdist';

% define net
net1 = selforgmap(dimensions,coverSteps,initNeighbor,topologyFcn,distanceFcn);

% train
[net1,Y] = train(net1,P);

plot 1D-SOM results

% plot input data and SOM weight positions
plotsompos(net1,P);
grid on

Create and train 2D-SOM

% SOM parameters
dimensions   = [10 10];
coverSteps   = 100;
initNeighbor = 4;
topologyFcn  = 'hextop';
distanceFcn  = 'linkdist';

% define net
net2 = selforgmap(dimensions,coverSteps,initNeighbor,topologyFcn,distanceFcn);

% train
[net2,Y] = train(net2,P);

plot 2D-SOM results

% plot input data and SOM weight positions
plotsompos(net2,P);
grid on

% plot SOM neighbor distances
plotsomnd(net2)

% plot for each SOM neuron the number of input vectors that it classifies
figure
plotsomhits(net2,P)