Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаба перевод матлаб.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆

7.6 Изучаемые функции . Функции создания нс

net=newc(PR, S, KLR, CLR) – функция создания слоя Кохонена. Функция использует аргументы: PR – Rх2 матрица минимальных и максимальных значений для R входных элементов, S – число нейронов, KLR – коэффициент обучения Кохонена (по умолчанию 0,01), CLR – коэффициент "справедливости" (по умолчанию 0,001).

net=newsom(PR, [D1, D2,…], TFCN, DFCN, OLR, OSTEPS, TLR, TND) – функция создания самоорганизующейся карты с аргументами: PR – Rх2 матрица минимальных и максимальных значений для R входных элементов, Di – размеры i-го слоя, по умолчанию [5 8], TFCN – топологическая функция, по умолчанию 'hextop', DFCN – функция расстояния, по умолчанию 'linkdist',

O LR – коэффициент обучения фазы упорядочивания, по умолчанию 0,9, OSTEPS – число шагов фазы упорядочивания, по умолчанию 1000, TLR – коэффициент упорядочивания фазы настройки, по умолчанию 0,02, TND – расстояние для фазы настройки (по умолчанию 1).

Вспомогательные функции

hextop(dim1, dim2,…, dimN) – функция размещения нейронов в узлах гексагональной (шестиугольной) решетки. Возвращает матрицу, содержащую N строк и (dim1 х dim2 х…х dimN) столбцов с координатами нейронов

plotsom(pos) – функция возвращает графическое представление расположения нейронов в самоорганизующихся картах.

Пример: pos = hextop(3,4)

pos =

0 1.0000 2.0000 0.5000 1.5000 2.5000 0 1.0000 2.0000 0.5000 1.5000 2.5000

0 0 0 0.8660 0.8660 0.8660 1.7321 1.7321 1.7321 2.5981 2.5981 2.5981

>> plotsom(pos) % Результат см. на рисунке 20

Рисунок 20 – Результат выполнения функции plotsom

7.7 Порядок выполнения работы

1. Кластеризация данных. Исходные данные приведены в таблице 3.

Таблица 3 – Исходные данные для кластеризации

x

0.09

0.1

0.15

0.3

0.35

0.32

0.25

0.7

0.7

0.8

0.75

0.79

y

0.48

0.41

0.55

0.3

0.4

0.35

0.50

0.7

0.75

0.65

0.9

1

% Нанесем данные на график, установим размеры осей:

>> plot(P(1,:),P(2,:),'+r');

>> axis([0 1 0 1.5]);

>> hold on;

% На графике видны три кластера. Создадим слой Кохонена, состоящий из 3-х нейронов:

>> net=newc([0 1;0 1],3,0.1);

% Установим количество эпох обучения:

>> net.trainParam.epochs=10;

% запишем в массив w веса слоя Кохонена

>> w=net.IW{1};

% Нанесем их на график. Сеть еще не обучена, поэтому все веса изображены в виде одной точки посредине исследуемой области

>> h=plot(w(:,1),w(:,2),'ob');

% Запустим обучение сети. Сеть обучается самостоятельно (без учителя). Задание целевых векторов не требуется

>> net=train(net,P);

TRAINR, Epoch 0/10

TRAINR, Epoch 10/10

TRAINR, Maximum epoch reached.

% Запишем веса в массив w:

>> w=net.IW{1};

% Удалим точку, изображавшую веса необученного слоя Кохонена:

>> delete(h);

% Нанесем на график веса обученных нейронов (см. рисунок 21). Теперь веса нейронов слоя Кохонена соответствуют центрам кластеров опытных данных

>> h=plot(w(:,1),w(:,2),'ob');

% Подпишем классы в соответствии с решением сети:

>> W=w';

>> for i=1:3, text(w(i,1)+0.01,w(i,2), sprintf('k %g',vec2ind(sim(net,W(:,i))))),end

% Проверим способность сети к классификации на данных, как входящих в обучающую выборку, так и новых:

>> p=[0.25;0.5];

>> a=sim(net,p)

a =

(3,1) 1

>> plot(p(1),p(2),'k*');

>> p=[0.2;0.5];

a=sim(net,p)

a = (2,1) 1

>> plot(p(1),p(2),'k*');

Рисунок 21 – Выявленные сетью центры кластеров (о)

>> p=[0.4;0.5];

a=sim(net,p)

a =

(3,1) 1

>> plot(p(1),p(2),'k*');

>> p=[0.8;0.75];

a=sim(net,p)

a = (1,1) 1

>> plot(p(1),p(2),'k*');

% По желанию можно преобразовывать разреженную матрицу решения сети в натуральный индекс при помощи функции vec2ind.