Лабораторная работа: Кластеризация с помощью нейронных сетей
w=h.IW{1}; % вывод графиков исходных данных и выявленных центров кластеров
plot(p(1,:),p(2,:),'^r'),grid;
hold on;
plot(w(:,1),w(:,2),'ob');
xlabel('p(1)');
ylabel('p(2)');
A=0.6
B=0.5
p=[A;B];
plot(A,B,'^k')
y=sim(h,p) %Onpoc сети
A =0.6000
B =0.5000
y = (2,1) 1
Результат работы программы представлен на рис. 1. Кроме того, его можно увидеть в командном окне: У= (2,1) 1
Предъявленный вектор отнесен ко второму кластеру. Теперь данный алгоритм применим к реальной (хоть и элементарной) задаче кластеризации. На вход нейронной сети будем подавать данные весоростовых показателей людей и попробуем выявить три класса (кластера):
1) нормальный весоростовой показатель;
2) избыток веса;
3) недостаток веса.
2. %входные данные (первая строка матрицы - рост; вторая - вес)
p=[175 180 182 175 183 176 183 176 183 176 175 180 178 180 178 182 178 182 179 174 172 179;
70 75 100 99 42 48 76 72 40 45 92 96 70 69 95 90 79 82 80 50 96 91] %создаем НС Кохонена с 3 кластерами (нормальный весоростовой показатель, избыток веса и недостаток веса)
h=newc([0 200;0 100],3,.1)
h.trainParam.epochs=500; %3адание количества циклов обучения
h=train(h,p)
w=h.IW{1};
plot(p(1,:),p(2,:),'^r');
hold on;
plot(w(:,1),w(:,2),'ob');