You are on page 1of 8

MACHINE LEARNING

SUBMITTED BY: ANAM GOHAR


MS-75
SUBMITTED TO: DR. USMAN AKRAM
DATED: JUNE 27TH, 2014

NORMALIZATION OF DATA (BETWEEN 0 & 1):


CODE:
close all
clc
max_val=max(max(dataset));
min_val=min(min(dataset));
counter=0;
in1=1;
in2=1;
%%%%%%%%%%%Normalization%%%%%%%%%%%
for i=1:length(dataset)
dataset(i,1:6)=(dataset(i,1:6)-min_val)/(max_val-min_val);
end

K-NEAREST NEIGHBOR:
CODE:
for k=3:9
counter=0;
train_dat=dataset(1:156,1:6) ;
%%%%%1st Fold%%%%
class=dataset(1:156,7);
test_dat=dataset(157:233,1:6);
group=knnclassify(test_dat,train_dat,class,k);
for i=1:length(group);
if(group(i)-dataset(i+156,7)==0);
counter=counter+1;
end
end
accuracy(in1,in2)=counter/length(group)*100
in2=in2+1
train_dat1=dataset(79:233,1:6);
%%%%%2nd Fold%%%%
class1=dataset(79:233,7);
test_dat1=dataset(1:78,1:6);
group1=knnclassify(test_dat1,train_dat1,class1,k);
counter=0;
for i=1:length(group);
if(group(i)-dataset(i,7)==0);
counter=counter+1;
end
end
accuracy(in1,in2)=counter/length(group)*100
in2=in2+1

train_dat3(1:155,1:6)=0;
train_dat3(79:155,1:6)=dataset(157:233,1:6);

train_dat3(1:78,1:6)=dataset(1:78,1:6);
class3=dataset(1:78,7);
class3(79:155)=dataset(157:233,7);
test_dat3= dataset(79:156,1:6);
group3=knnclassify(test_dat3,train_dat3,class3,k);
counter=0;
for i=1:length(group);
if(group(i)-dataset(i+78,7)==0);
counter=counter+1;
end
end
accuracy(in1,in2)=counter/length(group)*100
in1=in1+1;
in2=1;
end
for i=1:length(accuracy)
accuracy(i,4)= mean(accuracy(i,:));
end
max(accuracy(:,4))

OUTPUT:

As the value of mean is maximum at k=3 ie 55.8442 so this is the best value of k.

MINIMUM DISTANCE CLASSIFIER


CODE
%%%%%%%%%%%Minimum Distance Classifier%%%%%%%%%%%
in1=1; %%%%%%%%1st fold%%%%%%%%%
in2=1;
test=dataset(157:233,1:6);
for i=1:156;
if(dataset(i,7)==0)
class_zero(in1,1:6)=dataset(i,1:6);
in1=in1+1;
end
if(dataset(i,7)==1)
class_one(in2,1:6)=dataset(i,1:6);
in2=in2+1;
end
end
for i=1:6;
mean_zero(1,i)=mean(class_zero(:,i));
mean_one(1,i)=mean(class_one(:,i));

end
for i=1:length(test)
di(i)= mean_zero*transpose(test(i,:))-0.5*mean_zero*transpose(mean_zero);
dj(i)= mean_one*transpose(test(i,:))-0.5*mean_one*transpose(mean_one);
end
c=0
for i=1:length(di)
if di(i)>dj(i)
test(i,7)=0;
else test(i,7)=1;
end
if test(i,7)-dataset(i,7)==0
c=c+1;
end
end
in3=1; %%%%%%%%2nd fold%%%%%%%%%
in4=1;
test1=dataset(157:233,1:6);
for i=79:233;
if(dataset(i,7)==0)
class_zero1(in3,1:6)=dataset(i,1:6);
in3=in3+1;
end
if(dataset(i,7)==1)
class_one1(in4,1:6)=dataset(i,1:6);
in4=in4+1;
end
end
for i=1:6;
mean_zero1(1,i)=mean(class_zero1(:,i));
mean_one1(1,i)=mean(class_one1(:,i));
end
for i=1:length(test1)
di1(i)= mean_zero1*transpose(test1(i,:))0.5*mean_zero1*transpose(mean_zero1);
dj1(i)= mean_one1*transpose(test1(i,:))0.5*mean_one1*transpose(mean_one1);
end
c1=0
for i=1:length(di1)
if di1(i)>dj1(i)
test1(i,7)=0;
else test1(i,7)=1;
end
if test1(i,7)-dataset(i,7)==0
c1=c1+1;
end
end
in5=1; %%%%%%%%3rd fold%%%%%%%%%
in6=1;
test2=dataset(79:156,1:6);
for i=1:78;
if(dataset(i,7)==0)
class_zero2(in5,1:6)=dataset(i,1:6);
in5=in5+1;
end
if(dataset(i,7)==1)

class_one2(in6,1:6)=dataset(i,1:6);
in6=in6+1;
end
end
for i=157:233;
if(dataset(i,7)==0)
class_zero2(in5,1:6)=dataset(i,1:6);
in5=in5+1;
end
if(dataset(i,7)==1)
class_one2(in6,1:6)=dataset(i,1:6);
in6=in6+1;
end
end
for i=1:6;
mean_zero2(1,i)=mean(class_zero2(:,i));
mean_one2(1,i)=mean(class_one2(:,i));
end
for i=1:length(test2)
di2(i)= mean_zero2*transpose(test2(i,:))0.5*mean_zero2*transpose(mean_zero2);
dj2(i)= mean_one2*transpose(test2(i,:))0.5*mean_one2*transpose(mean_one2);
end
c2=0
for i=1:length(di2)
if di2(i)>dj2(i)
test2(i,7)=0;
else test2(i,7)=1;
end
if test2(i,7)-dataset(i,7)==0
c2=c2+1;
end
end

OUTPUT:

PLOTTING ROC BY SENSITIVITY AND SPECIFICITY


CODE
in1=1; in2=1;
Tn=0;
Tp=0;
Fn=0;
Fp=0;
for i=1:156
if dataset(i,7)==1;
class_one(in1,1:6)=dataset(i,1:6);
in1=in1+1;
end
if dataset(i,7)==0
class_zero(in2,1:6)=dataset(i,1:6);
in2=in2+1;
end
end

mi(1,1:6)=0;
mj(1,1:6)=0;
for i=1:6;
mean_zero(1,i)=mean(class_zero(:,i));
mean_one(1,i)=mean(class_one(:,i));
end
test=dataset(157:233,1:6);
for i=1:length(test)
euc(i)= dist(mean_one,transpose(test(i,1:6)));
if(euc(i)>0.01)
test(i,7)=1;
else test(i,7)=0;
end
if test(i,7)==0
Tp=Tp+1;
end
if test(i,7)==0
Fp=Fp+1;
end
if test(i,7)==1
Fn=Fn+1;
end
if test(i,7)==1
Tn=Tn+1;
end

& dataset(i+156,7)==0
& dataset(i+156,7)==1
& dataset(i+156,7)==0
& dataset(i+156,7)==1

end
sensitivity=Tp/(Tp+Fn);

specificity=Tn/(Fp+Tn);
%%%%%%%%%%%%%2nd fold%%%%%%%%%%%%%
in3=1; in4=1;
Tn1=0;
Tp1=0;
Fn1=0;
Fp1=0;
for i=79:233
if dataset(i,7)==1;
class_one1(in3,1:6)=dataset(i,1:6);
in3=in3+1;
end
if dataset(i,7)==0
class_zero1(in4,1:6)=dataset(i,1:6);
in4=in4+1;
end
end

for i=1:6;
mean_zero(1,i)=mean(class_zero1(:,i));
mean_one1(1,i)=mean(class_one1(:,i));
end
test1=dataset(1:78,1:6);
for i=1:length(test1)
euc1(i)= dist(mean_one1,transpose(test1(i,1:6)));
if(euc1(i)>0.01)
test1(i,7)=1;
else test1(i,7)=0;
end
if test1(i,7)==0
Tp1=Tp1+1;
end
if test1(i,7)==0
Fp1=Fp1+1;
end
if test1(i,7)==1
Fn1=Fn1+1;
end
if test1(i,7)==1
Tn1=Tn1+1;
end

& dataset(i,7)==0
& dataset(i,7)==1
& dataset(i,7)==0
& dataset(i,7)==1

end
sensitivity1=Tp1/(Tp1+Fn1);
specificity1=Tn1/(Fp1+Tn1);

OUTPUT
FOLDS
SENSITIVITY
1.
0.11
2.
0.24
Threshold for all folds is kept 0.01

SPECIFICITY
0.97
0.73

You might also like