%-----------------------------% 计算每一类手写数字样品的均值
%-----------------------------
load('template.mat');
xmeans=zeros(1,25);%% 计算每一类手写数字样品的均值
for i =1:10%%%%%%%%%% Begin %%%%%%%%%%\
xmeans=mean(pattern(i).feature);%%%%%%%%%% End %%%%%%%%%%if i==1
fprintf('%f\n',xmeans(1,1));
elseif i==10
fprintf('%f\n',xmeans(1,25));
end
end
2.计算每一类的协方差矩阵
%-----------------------------% 计算每一类的协方差矩阵
%-----------------------------
load('template.mat');
m=zeros(25,25);%协方差矩阵
invm=zeros(25,25);%协方差矩阵的逆矩阵
%% 计算每一类的协方差矩阵
for i =1:10%%%%%%%%%% Begin %%%%%%%%%%%计算协方差矩阵m
m=cov(pattern(i).feature);%计算协方差矩阵的逆矩阵invm
invm=pinv(m);%计算协方差矩阵的行列式detm
detm=det(invm);%%%%%%%%%% End %%%%%%%%%%if i==1
fprintf('%f\n',m(1,1));
elseif i==10
fprintf('%f\n',invm(1,1))
end
end
3.实现基于最小错误率贝叶斯分类的手写数字识别
%--------------------------------------------------------------------% 最小错误概率的Bayes方法
%--------------------------------------------------------------------
load('template.mat');
img=imread('untitled.bmp');%读入测试样本
feature=Getfeature(img);%提取测试样本的特征
x = zeros(1,25);%待测样品
xmeans = zeros(1,25);%样品的均值
m = zeros(25,25);%协方差矩阵
invm =zeros(25,25);%m的逆矩阵
pw = zeros(1,10);%先验概率P(wj)=n(i)/N
hx = zeros(1,10);%判别函数
t = zeros(1,25);
N =0;% 求先验概率
for i =1:10
N = N+pattern(i).num;%样品总数
end
for i =1:10
pw(i)= pattern(i).num/N;
end
for n =1:10
pnum = pattern(n).num;%训练样本特征二值化
for k =1:pnum
for i =1:25if pattern(n).feature(k,i)>0.1
pattern(n).feature(k,i)=1;else
pattern(n).feature(k,i)=0;
end
end
end
%%%%%%%%%% Begin %%%%%%%%%%%求样品平均值
xmeans=mean(pattern(n).feature);%求协方差矩阵m
m=cov(pattern(n).feature);%求m的逆矩阵invm
invm=pinv(m);%求m的行列式detm
detm=det(invm);% 测试样本特征二值化
for i =1:25if feature(i)>0.1
x(i)=1;else
x(i)=0;
end
end
% 求判别函数hx
for i=1:25
x(i)=x(i)-xmeans(i);
end
t=x*invm;
t1=t*x';
t2=log(pw(n));
t3=log(detm+1);
hx(n)=-t1/2+t2-t3/2;
end
%%%%%%%%%% End %%%%%%%%%%[tem,num]=max(hx);%找到其中的最大值
num = num-1;str= num2str(num);str=['应用最小错误率的Bayes方法识别结果:'str];
fprintf('%s\n',str);
1.计算每一类手写数字样品的均值% -----------------------------% 计算每一类手写数字样品的均值% -----------------------------load('template.mat');xmeans=zeros(1,25);%% 计算每一类手写数字样品的均值 for i = 1:10 %%%%%%%%%% Begin %%%%%%%%%%\xmeans=mean(pattern(i).feature); %%%%