Сеть LVQ обучена, чтобы классифицировать входные векторы согласно данным целям.
Позвольте X быть 10 входными векторами в качестве примера с 2 элементами и C быть классами эти векторы падение в. Эти классы могут быть преобразованы в векторы, которые будут использоваться в качестве целей, T, с IND2VEC.
x = [-3 -2 -2 0 0 0 0 +2 +2 +3; 0 +1 -1 +2 +1 -1 -2 +1 -1 0]; c = [1 1 1 2 2 2 2 1 1 1]; t = ind2vec(c);
Здесь точки данных построены. Красный = класс 1, Голубой = класс 2. Сеть LVQ представляет кластеры векторов со скрытыми нейронами и группирует кластеры с выходными нейронами, чтобы сформировать желаемые классы.
colormap(hsv); plotvec(x,c) title('Input Vectors'); xlabel('x(1)'); ylabel('x(2)');
Здесь LVQNET создает слой LVQ с четырьмя скрытыми нейронами и скоростью обучения 0,1. Сеть затем сконфигурирована для входных параметров X и предназначается для T. (Настройка обычно ненужный шаг, когда это сделано автоматически, ОБУЧАЕТСЯ.)
net = lvqnet(4,0.1); net = configure(net,x,t);
Конкурентоспособные векторы веса нейрона построены можно следующим образом.
hold on w1 = net.IW{1}; plot(w1(1,1),w1(1,2),'ow') title('Input/Weight Vectors'); xlabel('x(1), w(1)'); ylabel('x(2), w(2)');
Чтобы обучить сеть, сначала замените номер по умолчанию эпох, и затем обучите сеть. Когда это будет закончено, повторно постройте входные векторы '+' и векторы веса конкурентоспособных нейронов 'o'. Красный = класс 1, Голубой = класс 2.
net.trainParam.epochs=150; net=train(net,x,t); cla; plotvec(x,c); hold on; plotvec(net.IW{1}',vec2ind(net.LW{2}),'o');
Теперь используйте сеть LVQ в качестве классификатора, где каждый нейрон соответствует различной категории. Представьте входной вектор [0.2; 1]. Красный = класс 1, Голубой = класс 2.
x1 = [0.2; 1]; y1 = vec2ind(net(x1))
y1 = 2