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

6.3 Изучаемые функции Функция создания вероятностной нс

net=newpnn(P, T, spread). P – матрица входных векторов; T – матрица целевых векторов; spread – отклонение (по умолчанию 1,0).

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

ind2vec(ind) – функция преобразования строки индексов (т.е. целых положительных чисел). Возвращается разреженная матрица с одним единичным элементом в каждом столбце, положение которого определяется исходным набором индексов. Аргумент – строка индексов ind.

Пример:

>> ind=[1 2 4 3]

ind =

1 2 4 3

>> vec=ind2vec(ind)

vec =

(1,1) 1

(2,2) 1

(4,3) 1

(3,4) 1

vec2ind(vec) – функция, обратная к функции ind2vec(ind).

Пример:

>> vec=[1 0 0 0;0 0 1 0;0 1 0 0;0 0 0 1]

vec =

1 0 0 0

0 0 1 0

0 1 0 0

0 0 0 1

>> ind=vec2ind(vec)

ind =

1 3 2 4

Пример создания вероятностной нейронной сети.

% Возьмем четыре 2-элементных входных вектора P (координаты четырех точек) и вектор ассоциированных с ними классов Tc:

>> P=[0 1 3 2; 3 1 2.5 4]

P =

0 1.0000 3.0000 2.0000

3.0000 1.0000 2.5000 4.0000

>> Tc=[1 2 3 4];

% Изобразим соответствующие точки на графике (см. рисунок 18)

>> plot(P(1,:),P(2,:),'.','markersize',30)

>> axis([-1 4 0 5])

>> hold on

% Подпишем точки в соответствии с их целевыми классами

>> for i=1:4,text(P(1,i)+0.1,P(2,i), sprintf('klass %g',Tc(i))), end

Рисунок 18 – Центры четырех классов

% Конвертируем индексы классов в разреженную матрицу T:

>> T=ind2vec(Tc);

% При создании вероятностной сети примем значение параметра spread=2,

% потому что это примерно равно среднему расстоянию между имеющимися точками.

>> spr=2;

% Создадим вероятностную НС функцией newpnn:

>> net=newpnn(P,T,spr);

% Испытаем созданную НС на входных векторах. Предварительно закроем

% окно с графиком, чтобы нарисовать новый.

>> A=sim(net,P);

% Конвертируем выходную матрицу в индексы классов:

>> Ac=vec2ind(A);

% Построим новый график с надписями классов, определенных сетью (см.

% рисунок 19)

>> plot(P(1,:),P(2,:),'.','markersize',30)

>> axis([-1 4 0 5])

>> hold on

>> for i=1:4,text(P(1,i)+0.1,P(2,i), sprintf('klass %g',Ac(i))), end

Рисунок 19 – Результаты классификации данных нейронной сетью

% Попробуем классифицировать при помощи созданной НС новые точки:

>> p=[1.5;2];

>> a=sim(net,p);

>> ac=vec2ind(a);

>> plot(p(1),p(2),'r*','markersize',15)

>> text(p(1)+0.1,p(2), sprintf('klass %g',ac))

>> p=[3;3.5];

>> a=sim(net,p);

>> ac=vec2ind(a);

>> plot(p(1),p(2),'r*','markersize',15)

>> text(p(1)+0.1,p(2), sprintf('klass %g',ac))

% Сеть справилась с новыми образцами успешно (см. рисунок 19).

Создайте вероятностную нейронную сеть для классификации образцов по трем заданным классам:

Классы

Вариант 1

Вариант 2

Вариант 3

Вариант 4

X

Y

X

Y

X

Y

X

Y

Класс 1

0

2

1

2

3

2

1

1

Класс 2

2

4

1

4

1

4

1

3

Класс 3

2

0

3

3

5

4

3

1

Классы

Вариант 5

Вариант 6

Вариант 7

X

Y

X

Y

X

Y

Класс 1

4

2

2

2

1

1

Класс 2

2,5

4

4

4

3

1

Класс 3

1

2

4

2

3

3

Классы

Вариант 8

Вариант 9

Вариант 10

X

Y

X

Y

X

Y

Класс 1

2

1

4,5

3

1

4

Класс 2

3

3

1

2

6

3

Класс 3

4,5

1,5

3

0

3

1