Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 35

Пројекат из

Вештачке
интелигенције

Професор: Др Емилија Кисић

Висока школа електротехнике и рачунарства


Задатак 1.
а) Случај када је 𝜮𝟏 = 𝜮𝟐 = 𝜮
Прво је потребно генерисати 700 одбирака коришћењем методе за генерисање одбирака за
сваку класу и да их прикажемо у 2D простору.
Вредност:
2 −1
𝛴=[ ]
−1 1
А средње вредности су:
−1
𝑀1 = [ ]
4
3
𝑀2 = [ ]
1

Коришћена је функција rand за попуњавање и креирање две матрице димензија 2x700.


Функцијом plot приказан је положај сваке тачке у 2D равни(слика 1).

Слика 1 – приказ две класе у 2D равни


-d2 криве

Овде смо генерисали d2 криве за вредности 1,4,9 и приказали их заједно са генерисаним


одбирцима у 2D простору.Прво се налази инверзна коваријациона матрица а онда
одређујемо d2 криву у тачкама 1,4,9. То је приказано на следећој слици( слика 2).

Слика 2 – две класе у равни и d2 криве

-Бајесовски класификатор минималне грешке и дискриминациона права


У следећем делу задатка потребно је испројектовати Бајесовски класификатор минималне
грешке,за априорне вероватноће P1=P2=0.5 и нацртати дискриминациону функцију h(x)=0
(слика 3). У овом случају, када су обе коваријационе матрице једнаке, правило одлучивања
добија линеарну форму:
Слика 3 - Бајесовски класификатор P1=P2=0.5

Следећи део задатка треба урадити исто као у претходном делу само за случај када је:
P1=0.8, P2=0.2 и P1=0.2, P2=0.8 (Слика 4).

Слика 4 - Бајесовски класификатор за три различите вредности прага


-Процена грешки
У задњем делу овог задатка треба проценити вероватноћу грешке класификације за све три
вредности прага. Укупна вероватноћа грешке рачуна се по формули:
𝜀 = 𝑃1 𝜀1 + 𝑃2 𝜀2
Где су P1и P2 априорне вероватноће појаве класа, а 𝜀1 и 𝜀2 су вероватноће грешке првог и
другог типа.
Вероватноћа грешке за случај када је P1 = P2 = 0.5 je 0.0491
Вероватноћа грешке за случај када је P1 = 0.8 P2 = 0.2 je 0.0464
Вероватноћа грешке за случај када је P1 = 0.2 P2 = 0.8 je 0.0379
Вероватноћа грешке варира при сваком поновном покретању због генерисања нових
случајних одбирака.

б) Случај када је 𝜮𝟏 ≠ 𝜮𝟐
Вредности:
2 1
𝛴1 = [ ]
1 1
2 −1
𝛴2 = [ ]
−1 1
А средње вредности су
−1
𝑀1 = [ ]
3
3
𝑀2 = [ ]
1

Свих 5 под-задатка треба поновити и за различите вредности коваријационих матрица.


Поново позивамо функцију rand да би креирали и попунили две матрице дим. 2x700.
Функцијом plot приказан је положај сваке тачке у 2D равни (слика 5).
Слика 5 – Две класе у простору

-d2 криве
Поново генеришемо d2 криве за вредности 1,4,9 и приказујемо их заједно са генерисаним
одбирцима у 2D простору.Прво налазимо инверзну коваријациону матрицу, а затим
одређујемо d2криву у тачкама 1,4,9(слика 6).

Слика 6 - приказ две класе у равни и d2криве


-Бајесовски класификатор минималне грешке и дискриминациона права
Такође је поново потребно испројектовати Бајесовски класификатор минималне грешке,за
априорне вероватноће P1=P2=0.5 и нацртати дискриминациону функцију h(x)=0 што је
приказано на сл. слици (слика 7). У овом случају, када су коваријационе матрице
различите, дискриминациона функција добија квадратну форму:

Слика 7 - Класификација за P1=P2=0.5


Понављамо претходни део задатка, али овај пут за P1=0.8, P2=0.2 и P1=0.2, P2=0.8 и ово је
приказано на сл. слици(слика 8).

Слика 8 - Бајесовски класификатор за три различите вредности прага

-Процена грешки
У задњем делу овог задатка треба проценити вероватноћу грешке класификације за све три
вредности прага. Укупна вероватноћа грешке рачуна се по формули:
𝜀 = 𝑃1 𝜀1 + 𝑃2 𝜀2
Где су P1и P2 априорне вероватноће појаве класа, а 𝜀1 и 𝜀2 су вероватноће грешке првог и
другог типа.
Вероватноћа грешке за случај када је P1 = P2 = 0.5 je 0.0212
Вероватноћа грешке за случај када је P1 = 0.8 P2 = 0.2 je 0.0132
Вероватноћа грешке за случај када је P1 = 0.2 P2 = 0.8 je 0.0189
Вероватноћа грешке варира при сваком поновном покретању због генерисања нових
случајних одбирака.
2. Задатак
Други задатак се ради са унапред датом скупу података форми фајла IrisBaza.data. Опис
скупа: На основу ширине и дужине латица и ширине и дужине листића биљка Ирис се
може класификовати у три врсте: Iris Versicolor, Iris Setosa и Iris Virginica. Извршена је
редукција димензија, тако да се ове класе могу издвојити на основу два обележја. Скуп је
дат у следећој форми: Прво обележје класе је у првој колони, друго обележје је у другој
колони, док се у трећој колони налазе бројеви 1, 2 или 3, у зависности од тога која класа је
у питању. Број 1 означава да је у питању Iris Setosa, број 2 означава да је у питању Iris
Versicolor, док број 3 означава да је у питању Iris Virginica.
Прво је потребно приказати ове класе 2D простору различитим знаковима и бојама и
помоћу легенде приказати који одбирци припадају којој класи. Преко функције load
учитавамо скуп података у матрицу. Коришћене су for петље како би издвојили податке
три нове матрице на основу вредности треће колоне (слика 9).

Слика 9–Три класе биљке Ирис

У следећој тачки 2. задатка потребно је приказати функције густине вероватноће за све три
класе. То је урађено преко функције histfit и приказано на сл. слици (слика 10).
Слика 10–Функције густине вероватноће

У следећој тачки је потребно извршити класификацију Бајесовским класификатором


минималне грешке и то је приказано на следећој слици (слика 11).

Слика 11–Бајесовски класификатор


У следећој тачки је потребно извршити класификацију линеарним класификатором
методом жељених излаза и то је приказано на следећој слици (слика 12).

Слика 12–Линеарни класификатор методом жељених излаза

У следећој тачки треба произвољно подешавати тежине жељених излаза и коментарисати


добијене резултате.Резултати су прикзани на следећој слици (слика 13).

Слика 13–Класификатор методом жељених излаза


Изабрани су случаји када су коефицијенти класификације 0,5 и 2 (слика 13).Када је
коефицијент 0,5 ухваћени су сви цветови класе Iris Virginica, док је за вредност
коефицијента 2 ухваћени сви чланови класе Iris Versicolor.

За крај задатка потребно је да се процени којим класификатором је извршена успешнија


класификација.
Поређењем добијених резултата на сликама 11 и 12 можемо закључити да је линеарни
класификатор методом жељених излаза био мало успешнији у овом случају.

Кодови коришћени при изради пројекта

-Први задатак случај када је Σ1=Σ2=Σ-


-Први део
close all;
clear all;
clc;

N=700;
X = randn(N,2);
X = X';
Sigma=[2 -1;-1 1];

M1=[-1;4];
M2=[3;1];
[Fi1,Lambda1]=eig(Sigma);
A1=Fi1*sqrt(Lambda1);%formiramo transformacionu matricu
for i=1:N;
V(:,i)=A1*X(:,i)+M1;
end;
for i=1:N;
Y(:,i)=A1*X(:,i)+M2;
end;

figure(1)
plot(V(1,:),V(2,:),'o'), hold on
plot(Y(1,:),Y(2,:),'*'), hold on
xlabel('x');
ylabel('y');
title('Prikaz dve klase u 2D prostoru');
grid

-Други део
close all;
clear all;
clc;
N=700;
X = randn(N,2);
X = X';
Sigma=[2 -1;-1 1];

M1=[-1;4];
M2=[3;1];
[Fi1,Lambda1]=eig(Sigma);
A1=Fi1*sqrt(Lambda1);%formiramo transformacionu matricu
for i=1:N;
V(:,i)=A1*X(:,i)+M1;
end;
for i=1:N;
Y(:,i)=A1*X(:,i)+M2;
end;

%d^2 kriva
invSigma=inv(Sigma);

[x1,x2]=meshgrid(-8:.1:10,-5:.1:10);
dx=(invSigma(1,1)*(x1-M2(1))+invSigma(1,2)*(x2-M2(2))).*(x1-M2(1))+(invSigma(2,1)*(x1-
M2(1))+invSigma(2,2)*(x2-M2(2))).*(x2-M2(2));
dx2=(invSigma(1,1)*(x1-M1(1))+invSigma(1,2)*(x2-M1(2))).*(x1-M1(1))+(invSigma(2,1)*(x1-
M1(1))+invSigma(2,2)*(x2-M1(2))).*(x2-M1(2));

figure(2)
plot(V(1,:),V(2,:),'ob'), hold on
plot(Y(1,:),Y(2,:),'*r'), hold on
contour(x1,x2,dx,[1,4,9],'g'); %crtamo d^2 krivu u tackama 1, 4 i 9
contour(x1,x2,dx2,[1,4,9],'m'); %crtamo d^2 krivu u tackama 1, 4 i 9
title('Prikaz d^2 kriva');
grid

–Трећи део
close all;
clear all;
clc;

%Generisati dve klase sa normalnom raspodelom, istom varijansom i


%razlicitim srednjim vrednostima.
N=700;
X = randn(N,2);
X = X';
Sigma=[2 -1;-1 1];

M1=[-1;4];
M2=[3;1];
[Fi1,Lambda1]=eig(Sigma);
A1=Fi1*sqrt(Lambda1);%formiramo transformacionu matricu
for i=1:N;
V(:,i)=A1*X(:,i)+M1;
end;
for i=1:N;
Y(:,i)=A1*X(:,i)+M2;
end;

m11=M1(1);
m12=M1(2);
m21=M2(1);
m22=M2(2);
M3=M2-M1;
m1=M3(1);
m2=M3(2);
Sigma1=(Sigma)^-1;
x1=-6:8;

y=[-(m1*Sigma1(1,1)+m2*Sigma1(2,1))*x1-0.5*(M1'*Sigma1*M1-
M2'*Sigma1*M2)]/(m1*Sigma1(1,2)+m2*Sigma1(2,2));

figure(2)
plot(V(1,:),V(2,:),'*'), hold on
plot(Y(1,:),Y(2,:),'*'), hold on
plot(x1,y,'k', 'LineWidth',3)
xlabel('x1');
ylabel('x2');
title('Bajesovski klasifikator P1=P2=0.5');
grid
-Четврти део

close all;
clear all;
clc;

N=700;
X = randn(N,2);
X = X';
Sigma=[2 -1;-1 1];

M1=[-1;4];
M2=[3;1];
[Fi1,Lambda1]=eig(Sigma);
A1=Fi1*sqrt(Lambda1);%formiramo transformacionu matricu
for i=1:N;
V(:,i)=A1*X(:,i)+M1;
end;
for i=1:N;
Y(:,i)=A1*X(:,i)+M2;
end;

m11=M1(1);
m12=M1(2);
m21=M2(1);
m22=M2(2);
M3=M2-M1;
m1=M3(1);
m2=M3(2);
Sigma1=(Sigma)^-1;
x1=-6:8;

y=[-(m1*Sigma1(1,1)+m2*Sigma1(2,1))*x1-0.5*(M1'*Sigma1*M1-
M2'*Sigma1*M2)]/(m1*Sigma1(1,2)+m2*Sigma1(2,2));
y1=[(log(0.8/0.2))-(m1*Sigma1(1,1)+m2*Sigma1(2,1))*x1-0.5*(M1'*Sigma1*M1-
M2'*Sigma1*M2)]/(m1*Sigma1(1,2)+m2*Sigma1(2,2));
y2=[(log(0.2/0.8))-(m1*Sigma1(1,1)+m2*Sigma1(2,1))*x1-0.5*(M1'*Sigma1*M1-
M2'*Sigma1*M2)]/(m1*Sigma1(1,2)+m2*Sigma1(2,2));
figure(2)
plot(V(1,:),V(2,:),'*'), hold on
plot(Y(1,:),Y(2,:),'*'), hold on
plot(x1,y,'k', 'LineWidth',3)
plot(x1,y1,'k--', 'LineWidth',3)
plot(x1,y2,'k-.', 'LineWidth',3)
legend('Elementi prve klase','Elementi druge klase','P1=0.5 P2=0.5','P1=0.8 P2=0.2','P1=0.2
P2=0.8')
xlabel('x1');
ylabel('x2');
title('Bajesovski klasifikator za tri različite vrednosti praga');
grid

-Пети део

close all;
clear all;
clc;

N=700;
X = randn(N,2);
X = X';
Sigma=[2 -1;-1 1];

M1=[-1;4];
M2=[3;1];
[Fi1,Lambda1]=eig(Sigma);
A1=Fi1*sqrt(Lambda1);%formiramo transformacionu matricu
for i=1:N;
V(:,i)=A1*X(:,i)+M1;
end;
for i=1:N;
Y(:,i)=A1*X(:,i)+M2;
end;

m11=M1(1);
m12=M1(2);
m21=M2(1);
m22=M2(2);
M3=M2-M1;
m1=M3(1);
m2=M3(2);
Sigma1=(Sigma)^-1;
x1=-6:8;

%Prva klasa
x1p=V(1,:);
x2p=V(2,:);
h1=(m1*Sigma1(1,1)+m2*Sigma1(2,1))*x1p+(m1*Sigma1(1,2)+m2*Sigma1(2,2))*x2p+0.5*(M
1'*Sigma1*M1-M2'*Sigma1*M2);
greska1=0;
for i=1:N
if h1(i)>0
greska1=greska1+1;%pogresno klasifikovani
end
end

%Druga klasa
x1p1=Y(1,:);
x2p1=Y(2,:);
h2=(m1*Sigma1(1,1)+m2*Sigma1(2,1))*x1p1+(m1*Sigma1(1,2)+m2*Sigma1(2,2))*x2p1+0.5*
(M1'*Sigma1*M1-M2'*Sigma1*M2);
greska2=0;
for i=1:N
if h2(i)<0
greska2=greska2+1;%pogresno klasifikovani
end
end

%Greska klasifikatora
P1=(greska1/N)*100;
P2=(greska2/N)*100;
T1=100-P1;%tacnost prvog klasifikatora u procentima
T2=100-P2; %tacnost drugog klasifikatora u procentima

Verovatnoca1 = 0.5*(100-T1)/100 + 0.5*(100-T2)/100

%Prebrojavanje za P1=0.8 i P2=0.2


%Prva klasa
x11p=V(1,:);
x21p=V(2,:);
h1=(m1*Sigma1(1,1)+m2*Sigma1(2,1))*x11p+(m1*Sigma1(1,2)+m2*Sigma1(2,2))*x21p+0.5*
(M1'*Sigma1*M1-M2'*Sigma1*M2);
greska11=0;
for i=1:N
if h1(i)>log(0.8/0.2)
greska11=greska11+1;%pogresno klasifikovani
end
end

%Druga klasa
x11p11=Y(1,:);
x21p11=Y(2,:);
h2=(m1*Sigma1(1,1)+m2*Sigma1(2,1))*x11p11+(m1*Sigma1(1,2)+m2*Sigma1(2,2))*x21p11+
0.5*(M1'*Sigma1*M1-M2'*Sigma1*M2);
greska21=0;
for i=1:N
if h2(i)<log(0.8/0.2)
greska21=greska21+1;%pogresno klasifikovani
end
end
%Greska klasifikatora
P11=(greska11/N)*100;
P21=(greska21/N)*100;
T11=100-P11;%tacnost prvog klasifikatora u procentima
T21=100-P21; %tacnost drugog klasifikatora u procentima

Verovatnoca2 = 0.8*(100-T11)/100 + 0.2*(100-T21)/100

% Prebrojavanje za P1=0.2 i P2=0.8


%Prva klasa
x12p=V(1,:);
x22p=V(2,:);
h1=(m1*Sigma1(1,1)+m2*Sigma1(2,1))*x12p+(m1*Sigma1(1,2)+m2*Sigma1(2,2))*x22p+0.5*
(M1'*Sigma1*M1-M2'*Sigma1*M2);
greska12=0;
for i=1:N
if h1(i)>log(0.2/0.8)
greska12=greska12+1;%pogresno klasifikovani
end
end

%Druga klasa
x12p12=Y(1,:);
x22p12=Y(2,:);
h2=(m1*Sigma1(1,1)+m2*Sigma1(2,1))*x12p12+(m1*Sigma1(1,2)+m2*Sigma1(2,2))*x22p12+
0.5*(M1'*Sigma1*M1-M2'*Sigma1*M2);
greska22=0;
for i=1:N
if h2(i)<log(0.2/0.8)
greska22=greska22+1;%pogresno klasifikovani
end
end
%Greska klasifikatora
P12=(greska12/N)*100;
P22=(greska22/N)*100;
T12=100-P12;%tacnost prvog klasifikatora u procentima
T22=100-P22; %tacnost drugog klasifikatora u procentima

Verovatnoca3 = 0.2*(100-T12)/100 + 0.8*(100-T22)/100

- Први задатак случај када је Σ1≠Σ2–

-Први део

close all;
clear all;
clc;
N=700;
X = randn(N,2);
X = X';
Sigma1=[2 1;1 1];
Sigma2=[2 -1;-1 1];
M1=[-1;3];
M2=[3;1];

[Fi1,Lambda1]=eig(Sigma1);
A1=Fi1*sqrt(Lambda1);%formiramo transformacionu matricu
[Fi2,Lambda2]=eig(Sigma2);
A2=Fi2*sqrt(Lambda2);%formiramo transformacionu matricu
for i=1:N;
V(:,i)=A1*X(:,i)+M1;
end;
for i=1:N;
Y(:,i)=A2*X(:,i)+M2;
end;

figure(1)
plot(V(1,:),V(2,:),'bo'), hold on
plot(Y(1,:),Y(2,:),'r*'), hold on
xlabel('x1');
ylabel('x2');
title('Prikaz dve klase u x1 x2 prostoru');
grid
-Други део

close all;
clear all;
clc;
N=700;
X = randn(N,2);
X = X';
Sigma1=[2 1;1 1];
Sigma2=[2 -1;-1 1];
M1=[-1;3];
M2=[3;1];

[Fi1,Lambda1]=eig(Sigma1);
A1=Fi1*sqrt(Lambda1);%formiramo transformacionu matricu
[Fi2,Lambda2]=eig(Sigma2);
A2=Fi2*sqrt(Lambda2);%formiramo transformacionu matricu
for i=1:N;
V(:,i)=A1*X(:,i)+M1;
end;
for i=1:N;
Y(:,i)=A2*X(:,i)+M2;
end;
invSigma1=inv(Sigma1);
invSigma2=inv(Sigma2);
[x1,x2]=meshgrid(-10:.1:5,-5:.1:15);%odredjujemo 2D prostor gde cemo crtati d^2 krivu
dx1=(invSigma1(1,1)*(x1-M1(1))+invSigma1(1,2)*(x2-M1(2))).*(x1-
M1(1))+(invSigma1(2,1)*(x1-M1(1))+invSigma1(2,2)*(x2-M1(2))).*(x2-M1(2));
dx2=(invSigma2(1,1)*(x1-M2(1))+invSigma2(1,2)*(x2-M2(2))).*(x1-
M2(1))+(invSigma2(2,1)*(x1-M2(1))+invSigma2(2,2)*(x2-M2(2))).*(x2-M2(2));
plot(V(1,:),V(2,:),'bo'), hold on
plot(Y(1,:),Y(2,:),'r*'), hold on
contour(x1,x2,dx1,[1,4,9],'m','LineWidth',3); %crtamo d^2 krivu u tackama 1, 4 i 9
contour(x1,x2,dx2,[1,4,9],'g','LineWidth',3); %crtamo d^2 krivu u tackama 1, 4 i 9
title('Prikaz klasa i d^2 kriva')
grid

-Трећи део

close all;
clear all;
clc;
N=700;
X = randn(N,2);
X = X';
Sigma1=[2 1;1 1];
Sigma2=[2 -1;-1 1];
M1=[-1;3];
M2=[3;1];

[Fi1,Lambda1]=eig(Sigma1);
A1=Fi1*sqrt(Lambda1);%formiramo transformacionu matricu
[Fi2,Lambda2]=eig(Sigma2);
A2=Fi2*sqrt(Lambda2);%formiramo transformacionu matricu
for i=1:N;
V(:,i)=A1*X(:,i)+M1;
end;
for i=1:N;
Y(:,i)=A2*X(:,i)+M2;
end;

m11=M1(1);
m12=M1(2);
m21=M2(1);
m22=M2(2);
Sigma11=(Sigma1)^-1;
Sigma21=(Sigma2)^-1;

figure(4)
plot(V(1,:),V(2,:),'bo'), hold on
plot(Y(1,:),Y(2,:),'r*'), hold on

[x1,x2]=meshgrid(-8:0.03205:8,-4:0.02805:10);
y=0.5*[[(x1-m11)*Sigma11(1,1)+(x2-m12)*Sigma11(2,1)].*(x1-m11)+[(x1-
m11)*Sigma11(1,2)+(x2-m12)*Sigma11(2,2)].*(x2-m12)]-0.5*[[(x1-m21)*Sigma21(1,1)+(x2-
m22)*Sigma21(2,1)].*(x1-m21)+[(x1-m21)*Sigma21(1,2)+(x2-m22)*Sigma21(2,2)].*(x2-
m22)]+0.5*log(det(Sigma1)/det(Sigma2));
d=contour(x1,x2,y,[0,0],'k','LineWidth',2);
xlabel('x1');
ylabel('x2');
title('Klasifikacija za P1=P2=0.5');
grid

-Четврти део

close all;
clear all;
clc;
N=700;
X = randn(N,2);
X = X';
Sigma1=[2 1;1 1];
Sigma2=[2 -1;-1 1];
M1=[-1;3];
M2=[3;1];

[Fi1,Lambda1]=eig(Sigma1);
A1=Fi1*sqrt(Lambda1);%formiramo transformacionu matricu
[Fi2,Lambda2]=eig(Sigma2);
A2=Fi2*sqrt(Lambda2);%formiramo transformacionu matricu
for i=1:N;
V(:,i)=A1*X(:,i)+M1;
end;
for i=1:N;
Y(:,i)=A2*X(:,i)+M2;
end;

m11=M1(1);
m12=M1(2);
m21=M2(1);
m22=M2(2);
Sigma11=(Sigma1)^-1;
Sigma21=(Sigma2)^-1;

figure(4)
plot(V(1,:),V(2,:),'bo'), hold on
plot(Y(1,:),Y(2,:),'r*'), hold on

[x1,x2]=meshgrid(-6:0.03205:8,-4:0.02805:8);
y=0.5*[[(x1-m11)*Sigma11(1,1)+(x2-m12)*Sigma11(2,1)].*(x1-m11)+[(x1-
m11)*Sigma11(1,2)+(x2-m12)*Sigma11(2,2)].*(x2-m12)]-0.5*[[(x1-m21)*Sigma21(1,1)+(x2-
m22)*Sigma21(2,1)].*(x1-m21)+[(x1-m21)*Sigma21(1,2)+(x2-m22)*Sigma21(2,2)].*(x2-
m22)]+0.5*log(det(Sigma1)/det(Sigma2));
y1=0.5*[[(x1-m11)*Sigma11(1,1)+(x2-m12)*Sigma11(2,1)].*(x1-m11)+[(x1-
m11)*Sigma11(1,2)+(x2-m12)*Sigma11(2,2)].*(x2-m12)]-0.5*[[(x1-m21)*Sigma21(1,1)+(x2-
m22)*Sigma21(2,1)].*(x1-m21)+[(x1-m21)*Sigma21(1,2)+(x2-m22)*Sigma21(2,2)].*(x2-
m22)]+0.5*log(det(Sigma1)/det(Sigma2))+log(0.8/0.2);
y2=0.5*[[(x1-m11)*Sigma11(1,1)+(x2-m12)*Sigma11(2,1)].*(x1-m11)+[(x1-
m11)*Sigma11(1,2)+(x2-m12)*Sigma11(2,2)].*(x2-m12)]-0.5*[[(x1-m21)*Sigma21(1,1)+(x2-
m22)*Sigma21(2,1)].*(x1-m21)+[(x1-m21)*Sigma21(1,2)+(x2-m22)*Sigma21(2,2)].*(x2-
m22)]+0.5*log(det(Sigma1)/det(Sigma2))+log(0.2/0.8);
d=contour(x1,x2,y,[0,0],'k','LineWidth',2);
d1=contour(x1,x2,y1,[0,0],'k--','LineWidth',2);
d2=contour(x1,x2,y2,[0,0],'k-.','LineWidth',2);
xlabel('x1');
ylabel('x2');
legend('Elementi prve klase','Elementi druge klase','P1=0.5 P2=0.5','P1=0.8 P2=0.2','P1=0.2
P2=0.8')
title('Tri klasifikatora');
grid

-Пети део

close all;
clear all;
clc;
N=700;
X = randn(N,2);
X = X';
Sigma1=[2 1;1 1];
Sigma2=[2 -1;-1 1];
M1=[-1;3];
M2=[3;1];

[Fi1,Lambda1]=eig(Sigma1);
A1=Fi1*sqrt(Lambda1);%formiramo transformacionu matricu
[Fi2,Lambda2]=eig(Sigma2);
A2=Fi2*sqrt(Lambda2);%formiramo transformacionu matricu
for i=1:N;
V(:,i)=A1*X(:,i)+M1;
end;
for i=1:N;
Y(:,i)=A2*X(:,i)+M2;
end;

m11=M1(1);
m12=M1(2);
m21=M2(1);
m22=M2(2);
Sigma11=(Sigma1)^-1;
Sigma21=(Sigma2)^-1;
%Prebrojavanje za 0.5

%Prva klasa
for i=1:N
x1p(i)=V(1,i);
x2p(i)=V(2,i);
h1(i)=0.5*[[(x1p(i)-m11)*Sigma11(1,1)+(x2p(i)-m12)*Sigma11(2,1)].*(x1p(i)-m11)+[(x1p(i)-
m11)*Sigma11(1,2)+(x2p(i)-m12)*Sigma11(2,2)].*(x2p(i)-m12)]-0.5*[[(x1p(i)-
m21)*Sigma21(1,1)+(x2p(i)-m22)*Sigma21(2,1)].*(x1p(i)-m21)+[(x1p(i)-
m21)*Sigma21(1,2)+(x2p(i)-m22)*Sigma21(2,2)].*(x2p(i)-
m22)]+0.5*log(det(Sigma1)/det(Sigma2));
end
greska1=0;
for i=1:N
if h1(i)>0
greska1=greska1+1;%pogresno klasifikovani
end
end

%Druga klasa
for i=1:N
x1p(i)=Y(1,i);
x2p(i)=Y(2,i);
h2(i)=0.5*[[(x1p(i)-m11)*Sigma11(1,1)+(x2p(i)-m12)*Sigma11(2,1)].*(x1p(i)-m11)+[(x1p(i)-
m11)*Sigma11(1,2)+(x2p(i)-m12)*Sigma11(2,2)].*(x2p(i)-m12)]-0.5*[[(x1p(i)-
m21)*Sigma21(1,1)+(x2p(i)-m22)*Sigma21(2,1)].*(x1p(i)-m21)+[(x1p(i)-
m21)*Sigma21(1,2)+(x2p(i)-m22)*Sigma21(2,2)].*(x2p(i)-
m22)]+0.5*log(det(Sigma1)/det(Sigma2));
end
greska2=0;
for i=1:N
if h2(i)<0
greska2=greska2+1;%pogresno klasifikovani
end
end

%Greska klasifikatora
P1=(greska1/N)*100;
P2=(greska2/N)*100;
T1=100-P1;%tacnost prvog klasifikatora u procentima
T2=100-P2; %tacnost drugog klasifikatora u procentima
Verovatnoca1 = 0.5*(100-T1)/100 + 0.5*(100-T2)/100

%Prebrojavanje za P1=0.8, P2=0.2

%Prva klasa
for i=1:N
x1p(i)=V(1,i);
x2p(i)=V(2,i);
h1(i)=0.5*[[(x1p(i)-m11)*Sigma11(1,1)+(x2p(i)-m12)*Sigma11(2,1)].*(x1p(i)-m11)+[(x1p(i)-
m11)*Sigma11(1,2)+(x2p(i)-m12)*Sigma11(2,2)].*(x2p(i)-m12)]-0.5*[[(x1p(i)-
m21)*Sigma21(1,1)+(x2p(i)-m22)*Sigma21(2,1)].*(x1p(i)-m21)+[(x1p(i)-
m21)*Sigma21(1,2)+(x2p(i)-m22)*Sigma21(2,2)].*(x2p(i)-
m22)]+0.5*log(det(Sigma1)/det(Sigma2));
end
greska11=0;
for i=1:N
if h1(i)>log(0.8/0.2);
greska11=greska11+1;%pogresno klasifikovani
end
end

%Druga klasa
for i=1:N
x1p(i)=Y(1,i);
x2p(i)=Y(2,i);
h2(i)=0.5*[[(x1p(i)-m11)*Sigma11(1,1)+(x2p(i)-m12)*Sigma11(2,1)].*(x1p(i)-m11)+[(x1p(i)-
m11)*Sigma11(1,2)+(x2p(i)-m12)*Sigma11(2,2)].*(x2p(i)-m12)]-0.5*[[(x1p(i)-
m21)*Sigma21(1,1)+(x2p(i)-m22)*Sigma21(2,1)].*(x1p(i)-m21)+[(x1p(i)-
m21)*Sigma21(1,2)+(x2p(i)-m22)*Sigma21(2,2)].*(x2p(i)-
m22)]+0.5*log(det(Sigma1)/det(Sigma2));
end
greska21=0;
for i=1:N
if h2(i)<log(0.8/0.2);
greska21=greska21+1;%pogresno klasifikovani
end
end

%Greska klasifikatora
P11=(greska11/N)*100;
P21=(greska21/N)*100;
T11=100-P11;%tacnost prvog klasifikatora u procentima
T21=100-P21; %tacnost drugog klasifikatora u procentima

Verovatnoca2 = 0.8*(100-T11)/100 + 0.2*(100-T21)/100

%Prebrojavanje za P1=0.2, P2=0.8

%Prva klasa
for i=1:N
x1p(i)=V(1,i);
x2p(i)=V(2,i);
h1(i)=0.5*[[(x1p(i)-m11)*Sigma11(1,1)+(x2p(i)-m12)*Sigma11(2,1)].*(x1p(i)-m11)+[(x1p(i)-
m11)*Sigma11(1,2)+(x2p(i)-m12)*Sigma11(2,2)].*(x2p(i)-m12)]-0.5*[[(x1p(i)-
m21)*Sigma21(1,1)+(x2p(i)-m22)*Sigma21(2,1)].*(x1p(i)-m21)+[(x1p(i)-
m21)*Sigma21(1,2)+(x2p(i)-m22)*Sigma21(2,2)].*(x2p(i)-
m22)]+0.5*log(det(Sigma1)/det(Sigma2));
end
greska12=0;
for i=1:N
if h1(i)>log(0.2/0.8);
greska12=greska12+1;%pogresno klasifikovani
end
end

%Druga klasa
for i=1:N
x1p(i)=Y(1,i);
x2p(i)=Y(2,i);
h2(i)=0.5*[[(x1p(i)-m11)*Sigma11(1,1)+(x2p(i)-m12)*Sigma11(2,1)].*(x1p(i)-m11)+[(x1p(i)-
m11)*Sigma11(1,2)+(x2p(i)-m12)*Sigma11(2,2)].*(x2p(i)-m12)]-0.5*[[(x1p(i)-
m21)*Sigma21(1,1)+(x2p(i)-m22)*Sigma21(2,1)].*(x1p(i)-m21)+[(x1p(i)-
m21)*Sigma21(1,2)+(x2p(i)-m22)*Sigma21(2,2)].*(x2p(i)-
m22)]+0.5*log(det(Sigma1)/det(Sigma2));
end
greska22=0;
for i=1:N
if h2(i)<log(0.2/0.8);
greska22=greska22+1;%pogresno klasifikovani
end
end

%Greska klasifikatora
P12=(greska12/N)*100;
P22=(greska22/N)*100;
T12=100-P12;%tacnost prvog klasifikatora u procentima
T22=100-P22; %tacnost drugog klasifikatora u procentima

Verovatnoca3 = 0.2*(100-T12)/100 + 0.8*(100-T22)/100

-Други задатак-

-Први део

clear all
close all
clc

load IrisBaza.data

X = IrisBaza(:,1:3);
a=1;
b=1;
c=1;

Length = 50;

V1 = zeros(Length,2);
V2 = zeros(Length,2);
V3 = zeros(Length,2);

N = length(X);

for i=1:N
if (X(i,3) ==1)
V1(a, 1) = X(i,1);
V1(a, 2) = X(i,2);
a = a +1;
elseif (X(i,3) ==2)
V2(b, 1) = X(i,1);
V2(b, 2) = X(i,2);
b = b +1;
else
V3(c,1) = X(i,1);
V3(c,2) = X(i,2);
c = c +1;
end
end

figure(1)
plot(V1(:,1),V1(:,2),'b*','MarkerSize',15), hold on
plot(V2(:,1),V2(:,2),'ro','MarkerSize',15), hold on
plot(V3(:,1),V3(:,2),'gx','MarkerSize',15), hold on
xlabel('x1');
ylabel('x2');
legend('Iris Setosa','Iris Versicolor','Iris Virginica')
title('Prikaz tri klase biljke Iris u 2D prostoru');
grid

-Други део

clear all
close all
clc

load IrisBaza.data

X = IrisBaza(:,1:3);
a=1;
b=1;
c=1;

Length = 50;

V1 = zeros(Length,2);
V2 = zeros(Length,2);
V3 = zeros(Length,2);

N = length(X);

for i=1:N
if (X(i,3) ==1)
V1(a, 1) = X(i,1);
V1(a, 2) = X(i,2);
a = a +1;
elseif (X(i,3) ==2)
V2(b, 1) = X(i,1);
V2(b, 2) = X(i,2);
b = b +1;
else
V3(c,1) = X(i,1);
V3(c,2) = X(i,2);
c = c +1;
end
end

d1=V1(:,1);
d2=V1(:,2);
d3=V2(:,1);
d4=V2(:,2);
d5=V3(:,1);
d6=V3(:,2);
subplot(2,3,1);
histfit(d1);
title('Iris Setosa')
subplot(2,3,4);
histfit(d2);
title('Iris Setosa')
subplot(2,3,2);
histfit(d3);
title('Iris Versicolor')
subplot(2,3,5);
histfit(d4);
title('Iris Versicolor')
subplot(2,3,3);
histfit(d5);
title('Iris Virginica')
subplot(2,3,6);
histfit(d6);
title('Iris Virginica')

-Трећи део

clear all
close all
clc

load IrisBaza.data

X = IrisBaza(:,1:3);
a=1;
b=1;
c=1;

Length = 50;

V1 = zeros(Length,2);
V2 = zeros(Length,2);
V3 = zeros(Length,2);

N = length(X);

for i=1:N
if (X(i,3) ==1)
V1(a, 1) = X(i,1);
V1(a, 2) = X(i,2);
a = a +1;
elseif (X(i,3) ==2)
V2(b, 1) = X(i,1);
V2(b, 2) = X(i,2);
b = b +1;
else
V3(c,1) = X(i,1);
V3(c,2) = X(i,2);
c = c +1;
end
end

Cx = cov(V1);
Mx = mean(V1);
Cy = cov(V2);
My = mean(V2);
Cz = cov(V3);
Mz = mean(V3);

m11=Mx(1);
m12=Mx(2);
m21=My(1);
m22=My(2);
m41=Mz(1);
m42=Mz(2);
M3=Mx-My;
M4=My-Mx;
M1=Mx;
M2=My;
m1=M3(1);
m2=M3(2);
Sigma1=Cx;
Sigma2=Cy;
Sigma3=Cz;
Sigma11=(Cx)^-1;
Sigma21=(Cy)^-1;
Sigma31=(Cz)^-1;

[x1,x2]=meshgrid(-2:0.001:3,1:0.01:3);
y1=0.5*[[(x1-m11)*Sigma11(1,1)+(x2-m12)*Sigma11(2,1)].*(x1-m11)+[(x1-
m11)*Sigma11(1,2)+(x2-m12)*Sigma11(2,2)].*(x2-m12)]-0.5*[[(x1-m21)*Sigma21(1,1)+(x2-
m22)*Sigma21(2,1)].*(x1-m21)+[(x1-m21)*Sigma21(1,2)+(x2-m22)*Sigma21(2,2)].*(x2-
m22)]+0.5*log(det(Sigma1)/det(Sigma2));
y2=0.5*[[(x1-m21)*Sigma21(1,1)+(x2-m22)*Sigma21(2,1)].*(x1-m21)+[(x1-
m21)*Sigma21(1,2)+(x2-m22)*Sigma21(2,2)].*(x2-m22)]-0.5*[[(x1-m41)*Sigma31(1,1)+(x2-
m42)*Sigma31(2,1)].*(x1-m41)+[(x1-m41)*Sigma31(1,2)+(x2-m42)*Sigma31(2,2)].*(x2-
m42)]+0.5*log(det(Sigma2)/det(Sigma3));

figure(1)
plot(V1(:,1),V1(:,2),'b*','MarkerSize',15), hold on
plot(V2(:,1),V2(:,2),'ro','MarkerSize',15), hold on
plot(V3(:,1),V3(:,2),'gx','MarkerSize',15), hold on
d=contour(x1,x2,y1,[0,0],'k','LineWidth',2);
d=contour(x1,x2,y2,[0,0],'k','LineWidth',2);
xlabel('x1');
ylabel('x2');
legend('Iris Setosa','Iris Versicolor','Iris Virginica')
title('Prikaz tri klase biljke Iris i Bajesovski klasifikator');
grid

-Четврти део

clear all
close all
clc

load IrisBaza.data

X = IrisBaza(:,1:3);
a=1;
b=1;
c=1;

Length = 50;

V1 = zeros(Length,2);
V2 = zeros(Length,2);
V3 = zeros(Length,2);

N = length(X);

for i=1:N
if (X(i,3) ==1)
V1(a, 1) = X(i,1);
V1(a, 2) = X(i,2);
a = a +1;
elseif (X(i,3) ==2)
V2(b, 1) = X(i,1);
V2(b, 2) = X(i,2);
b = b +1;
else
V3(c,1) = X(i,1);
V3(c,2) = X(i,2);
c = c +1;
end
end

%Linearni klasifikator
figure(5);
plot(V1(:,1),V1(:,2),'b*','MarkerSize',15), hold on
plot(V2(:,1),V2(:,2),'ro','MarkerSize',15), hold on
plot(V3(:,1),V3(:,2),'gx','MarkerSize',15), hold on

title('Linearna klasifikacija');
grid
axis([-2 3 1 3]);

duzina = 50;

Gama=ones(2*duzina,1);
Z = [-ones(1,duzina) ones(1,duzina); -V1.' V2.'];

W = (Z*Z')^(-1)*Z*Gama;
v0 = W(1);
V = [W(2);W(3)];
xp = [-2 3];
plot(xp,(-v0-V(1)*xp)/V(2),'k','LineWidth',3);

Gama=ones(2*duzina,1);
Z = [-ones(1,duzina) ones(1,duzina); -V2.' V3.'];

W = (Z*Z')^(-1)*Z*Gama;
v0 = W(1);
V = [W(2);W(3)];
xp = [-2 3];
plot(xp,(-v0-V(1)*xp)/V(2),'k','LineWidth',3);
legend('Iris Setosa','Iris Versicolor','Iris Virginica')
hold off

-Пети део

clear all
close all
clc

load IrisBaza.data

X = IrisBaza(:,1:3);
a=1;
b=1;
c=1;

Length = 50;

V1 = zeros(Length,2);
V2 = zeros(Length,2);
V3 = zeros(Length,2);

N = length(X);

for i=1:N
if (X(i,3) ==1)
V1(a, 1) = X(i,1);
V1(a, 2) = X(i,2);
a = a +1;
elseif (X(i,3) ==2)
V2(b, 1) = X(i,1);
V2(b, 2) = X(i,2);
b = b +1;
else
V3(c,1) = X(i,1);
V3(c,2) = X(i,2);
c = c +1;
end
end

%Linearni klasifikator
figure(5);
plot(V1(:,1),V1(:,2),'b*','MarkerSize',15), hold on
plot(V2(:,1),V2(:,2),'ro','MarkerSize',15), hold on
plot(V3(:,1),V3(:,2),'gx','MarkerSize',15), hold on

title('Linearna klasifikacija');
grid
axis([-2 3 1 3]);

duzina = 50;

Gama=ones(2*duzina,1);
Z = [-ones(1,duzina) ones(1,duzina); -V1.' V2.'];

W = (Z*Z')^(-1)*Z*Gama;
v0 = W(1);
V = [W(2);W(3)];
xp = [-2 3];
plot(xp,(-v0-V(1)*xp)/V(2),'k','LineWidth',3);

Gama=ones(2*duzina,1);
Z = [-ones(1,duzina) ones(1,duzina); -V2.' V3.'];

W = (Z*Z')^(-1)*Z*Gama;
v0 = W(1);
V = [W(2);W(3)];
xp = [-2 3];
plot(xp,(-v0-V(1)*xp)/V(2),'k','LineWidth',3);

Gama=[0.5*ones(duzina,1); ones(duzina,1)];
Z = [-ones(1,duzina) ones(1,duzina); -V1.' V2.'];
W = (Z*Z')^(-1)*Z*Gama;
v0 = W(1);
V = [W(2);W(3)];
xp = [-2 3];
plot(xp,(-v0-V(1)*xp)/V(2),'k--','LineWidth',3);

Gama=[0.5*ones(duzina,1); ones(duzina,1)];
Z = [-ones(1,duzina) ones(1,duzina); -V2.' V3.'];
W = (Z*Z')^(-1)*Z*Gama;
v0 = W(1);
V = [W(2);W(3)];
xp = [-2 3];
plot(xp,(-v0-V(1)*xp)/V(2),'k--','LineWidth',3);

Gama=[2*ones(duzina,1); ones(duzina,1)];
Z = [-ones(1,duzina) ones(1,duzina); -V1.' V2.'];
W = (Z*Z')^(-1)*Z*Gama;
v0 = W(1);
V = [W(2);W(3)];
xp = [-2 3];
plot(xp,(-v0-V(1)*xp)/V(2),'k-.','LineWidth',3);

Gama=[2*ones(duzina,1); ones(duzina,1)];
Z = [-ones(1,duzina) ones(1,duzina); -V2.' V3.'];
W = (Z*Z')^(-1)*Z*Gama;
v0 = W(1);
V = [W(2);W(3)];
xp = [-2 3];
plot(xp,(-v0-V(1)*xp)/V(2),'k-.','LineWidth',3);
legend('Iris Setosa','Iris Versicolor','Iris Virginica')
hold off
legend('Iris Setosa','Iris Versicolor','Iris Virginica','Linearni','Linearni','0.5','0.5','2','2')
hold off

Литература

У изради пројекта коришћена су предавања и вежбе окачена на Мудл


страници предмета

You might also like