Одномерная карта Кохонена

Рассмотрим 100 двухэлементных входных векторов единичной длины, распределенных равномерно в пределах от 0 до 90°:

angles = 0:0.5*pi/99:0.5*pi;

P = [sin(angles); cos(angles)];

plot(P(1,1:10:end), P(2,1:10:end),'*b'), hold on

График входных векторов приведен на рис. 7.13, а, и на нем символом * отмечено
положение каждого 10-го вектора.

а б

Рис. 7.13

Сформируем самоорганизующуюся карту Кохонена в виде одномерного слоя из 10 ней­ронов и выполним обучение в течение 2000 циклов:

net = newsom([0 1;0 1], [10]);

net.trainParam.epochs = 2000;

net.trainParam.show = 100;

[net, tr] = train(net,P);

plotsom(net.IW{1,1},net.layers{1}.distances) % Рис.7.13,а

figure(2)

a = sim(net,P);

bar(sum(a')) % Рис.7.13,б

Весовые коэффициенты нейронов, определяющих центры кластеров, отмечены
на рис. 7.13, а цифрами. На рис. 7.13, б показано распределение обучающих векторов
по кластерам. Как и ожидалось, они распределены практически равномерно с разбросом от 8 до 12 векторов в кластере.

Таким образом, сеть подготовлена к кластеризации входных векторов. Определим,
к какому кластеру будет отнесен вектор [1; 0]:

a = sim(net,[1;0])

a = (10,1) 1

Как и следовало ожидать, он отнесен к кластеру с номером 10.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: