g1=[41.19 11.86 0.182 36.22;34.99 9.84 0.178 27.82;35.62 10.56 0.261 21.02]
g2=[23.21 5.46 0.11 21.17;25.05 6.84 0.134 27.3;19.23 6.61 0.137 26.61]
fprintf('distance discriminant analysis:\n')
fprintf('same covariance matrix:\n')
fprintf('covariance matrix s1,s2:\n')
s1=cov(g1)
s2=cov(g2)
fprintf('because same covariance matrix in sample,the total covariance matrix s is:\n')
[m1,n2]=size(g1);
[m2,n2]=size(g2);
s=((m1-1)*s1+(m2-1)*s2)/(m1+m2-2)
fprintf('squared distance for two groups:\n')
sn=inv(s);
u1=mean(g1);
u2=mean(g2);
ucz=(u1-u2)';
dmj=(u1-u2)*sn*ucz
fprintf('discriminant function:\n')
syms x1;
syms x2;
syms x3;
syms x4;
x=[x1;x2;x3;x4];
u1z=u1';
u2z=u2';
a1=(sn*u1z)';
b1=(u1*sn*u1z)/2;
a2=(sn*u2z)';
b2=(u2*sn*u2z)/2;
w1=vpa((a1*x-b1),4)
w2=vpa((a2*x-b2),4)
fprintf('back substitution: error rate p1:\n')
fprintf('campare gwh1 and gwh2\n')
g=[g1;g2];
[m,n]=size(g);
for i=1:m
ghdw1(i,:)=a1.*g(i,:);
ghdw2(i,:)=a2.*g(i,:);
gwh1(i)=sum(ghdw1(i,:))-b1;
gwh2(i)=sum(ghdw2(i,:))-b2;
end
gwh1
gwh2
fprintf('After comparision, 1,2,3号in g1 is g1;1,2,3 in g2 isg2, error rate:\n')
p1=0
fprintf('new sample:\n')
yp=[26.93 12.66 0.152 30.20;25.47 10.25 0.132 33.46;27.38 10.38 0.120 31.20;28.98 10.98 0.111 31.21];
[p,q]=size(yp);
for j=1:p
w1p(j,:)=a1.*yp(j,:);
w2p(j,:)=a2.*yp(j,:);
w1pb(j)=sum(w1p(j,:))-b1;
w2pb(j)=sum(w2p(j,:))-b2;
end
w1pb
w2pb
for k=1:4
if(w1pb(k)>=w2pb(k))
fprintf('new sample belong grouo1 is %g\n',k)
end
end
fprintf('bayes:\n')
fprintf('\nsame covariance matrix:\n')
fprintf('\nprior probability:\n')
bp1=m1/(m1+m2)
bp2=m2/(m1+m2)
fprintf('Bayesian:\n')
bw1=w1+log(bp1);
bw2=w2+log(bp2);
fprintf('same covariance matrix,same miscarriage of justice, same prior probability: distance discriminant analysis=bayes discriminant analysis\n')
fprintf('squared distance function:')
syms bx1;syms bx2;syms bx3;syms bx4;
bx=[bx1;bx2;bx3;bx4];
bdp1=vpa((bx-u1z)'*sn*(bx-u1z)-2*log(bp1),4)
bdp2=vpa((bx-u2z)'*sn*(bx-u2z)-2*log(bp2),4)
fprintf('posterior probability pg1,pg2:\n')
pg1=exp(-0.5*bdp1)/(exp(-0.5*bdp1)+exp(-0.5*bdp2))
pg2=exp(-0.5*bdp2)/(exp(-0.5*bdp1)+exp(-0.5*bdp2))
fprintf('rule:when pg1>=pg2,belongs g1;when pg1<pg2,belongs g2!!!\n')
fprintf('\nback substitution\n')
for t=1:m
bdg1(t)=(g(t,:)'-u1z)'*sn*(g(t,:)'-u1z)-2*log(bp1);
bdg2(t)=(g(t,:)'-u2z)'*sn*(g(t,:)'-u2z)-2*log(bp2);
p1b(t)=exp(-0.5*bdg1(t))/(exp(-0.5*bdg1(t))+exp(-0.5*bdg2(t)));
p2b(t)=exp(-0.5*bdg2(t))/(exp(-0.5*bdg1(t))+exp(-0.5*bdg2(t)));
end
fprintf('posterior probability:\n')
p1b
p2b
fprintf('error rate:\n')
bp=0
fprintf('new sample\n')
for v=1:p
ydg1(v)=(yp(v,:)'-u1z)'*sn*(yp(v,:)'-u1z)-2*log(bp1);
ydg2(v)=(yp(v,:)'-u2z)'*sn*(yp(v,:)'-u2z)-2*log(bp2);
yp1(v)=exp(-0.5*ydg1(v))/(exp(-0.5*ydg1(v))+exp(-0.5*ydg2(v)));
yp2(v)=exp(-0.5*ydg2(v))/(exp(-0.5*ydg1(v))+exp(-0.5*ydg2(v)));
end
fprintf('posterior probability yp1,yp2:\n')
yp1
yp2
fprintf('campare yp1,yp2:\n')
for w=1:p
if(yp1(w)>=yp2(w))
fprintf('new sample belongs group1 is:%g\n',w)
end
end
% training=[41.19 11.86 0.182 36.22;34.99 9.84 0.178 27.82;35.62 10.56 0.261 21.02;23.21 5.46 0.11 21.17;25.05 6.84 0.134 27.3;19.23 6.61 0.137 26.61];
% group=[1;1;1;2;2;2];
% sample=[26.93 12.66 0.152 30.20;25.47 10.25 0.132 33.46;27.38 10.38 0.120 31.20;28.98 10.98 0.111 31.21];
% classify(sample,training,group)
评论0