📄 classifier.m
字号:
function wineclassifier = classifier(t)
load wine.data
prior1=59/178;
prior2=71/178;
prior3=48/178;
feature=wine;
feature(:,1)=[];
%normalize data
fmin=min(feature);
fmax=max(feature);
for i=1:178
feature(i,:)=((feature(i,:)-fmin)./(fmax-fmin))*4;
end
%caculate training data
for i=1:t
fea1(i,:)=feature(i,:);
fea2(i,:)=feature(i+59,:);
fea3(i,:)=feature(i+130,:);
end
mu1=mean(fea1);
mu2=mean(fea2);
mu3=mean(fea3);
%zero mean
for i=1:t
fea1(i,:)=fea1(i,:)-mu1;
fea2(i,:)=fea2(i,:)-mu2;
fea3(i,:)=fea1(i,:)-mu3;
end
c1=cov(fea1);
c2=cov(fea2);
c3=cov(fea3);
correct1=0;
correct2=0;
correct3=0;
for i=1:178
lratio(i,1)=(1/(((2*pi)^(13/2))*det(c1)^(1/2)))*exp(-(1/2)*(feature(i,:)-mu1)*inv(c1)*(feature(i,:)-mu1).');
posterior(i,1)=lratio(i,1)*prior1;
lratio(i,2)=(1/(((2*pi)^(13/2))*det(c2)^(1/2)))*exp(-(1/2)*(feature(i,:)-mu2)*inv(c2)*(feature(i,:)-mu2).');
posterior(i,2)=lratio(i,2)*prior2;
lratio(i,3)=(1/(((2*pi)^(13/2))*det(c3)^(1/2)))*exp(-(1/2)*(feature(i,:)-mu3)*inv(c3)*(feature(i,:)-mu3).');
posterior(i,3)=lratio(i,3)*prior3;
if max(posterior(i,:))==posterior(i,1)
posterior(i,4)=1;
elseif max(posterior(i,:))==posterior(i,2)
posterior(i,4)=2;
else
posterior(i,4)=3;
end
if posterior(i,4)==wine(i,1)
if i>=1 && i<=59
correct1=correct1+1;
elseif i>=60 && i<=130
correct2=correct2+1;
else
correct3=correct3+1;
end
end
end
totalReRate=(correct1+correct2+correct3)/178;
class1rate=correct1/59;
class2rate=correct2/71;
class3rate=correct3/48;
wineclassifier=[class1rate,class2rate,class3rate,totalReRate];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -