-
Notifications
You must be signed in to change notification settings - Fork 0
/
ac_ten_fold
41 lines (40 loc) · 1.19 KB
/
ac_ten_fold
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
function [acy] = ac_ten_fold(testclass1,testclass2,N1,N2,d,folderno)
% ten-folder cross validation method for quandratic discriminant function
fn1=fix(N1/folderno);
fn2=fix(N2/folderno);
ac=0;
for i=1:folderno
startno1=(i-1)*fn1+1;
endno1=startno1+fn1-1;
startno2=(i-1)*fn2+1;
endno2=startno2+fn2-1;
dtrian1=[];
dtrian2=[];
dtest1=[];
dtest2=[];
for n=1:N1
if(n>=startno1&&n<=endno1)
dtest1=[dtest1;testclass1(n,:)];
else
dtrian1=[dtrian1;testclass1(n,:)];
end
end
for n=1:N2
if(n>=startno2&&n<=endno2)
dtest2=[dtest2;testclass2(n,:)];
else
dtrian2=[dtrian2;testclass2(n,:)];
end
end
[mu_cap_class1,cov_cap_class1]=ml(dtrian1,N1-fn1,d);
[mu_cap_class2,cov_cap_class2]=ml(dtrian2,N2-fn2,d);
p1=(N1-fn1)/((N1-fn1)+(N2-fn2));
p2=(N2-fn2)/((N1-fn1)+(N2-fn2));
[A,B,C]=discriminant(mu_cap_class1',mu_cap_class2',cov_cap_class1,cov_cap_class2,p1,p2);
ac_class1=accurancy(fn1,dtest1,A,B,C,1);
ac_class2=accurancy(fn2,dtest2,A,B,C,0);
ac_avg=(ac_class1+ac_class2)/2;
ac=ac+ac_avg;
end
acy=ac/folderno;
end