x =[-3.9847-3.5549-1.2401-0.9780-0.7932-2.8531-2.7605-3.7287-3.5414-2.2692-3.4549-3.0752-3.99342.8792-0.97800.79321.18823.0682-1.5799-1.48850.7431-0.4221-1.11864.2532];
pw =[0.90.1];%% 类条件概率分布正态分布分别为N(e1,a1)和N(e2,a2)
e1 =-2; a1 =0.5;
e2 =2; a2 =2;
m =numel(x);
result =zeros(1,m);%%%%%%%%%% Begin %%%%%%%%%%%% 计算后验概率
for i =1:m
pw1_x(i)=(pw(1)*normpdf(x(i),e1,a1))/(pw(1)*normpdf(x(i),e1,a1)+pw(2)*normpdf(x(i),e2,a2));pw2_x(i)=(pw(2)*normpdf(x(i),e2,a2))/(pw(1)*normpdf(x(i),e1,a1)+pw(2)*normpdf(x(i),e2,a2));
end
%% 根据最小误判概率准则进行判决,结果存入result中
for i =1:m
ifpw1_x(i)>pw2_x(i)result(i)=0;elseresult(i)=1;
end
end
%%%%%%%%%% End %%%%%%%%%%fprintf("%4d",result);fprintf("\n");
Level 2: Bayesian Discriminant Function for Normal Distribution Pattern
pkg load statistics
function GuassianBayesModel(w, p, X)%%%%%%%%%% Begin %%%%%%%%%%%%根据给出的样本数据,求各个类的均值
u(:,:,1)=sum(w(:,:,1))./10;
u(:,:,2)=sum(w(:,:,2))./10;
u(:,:,3)=sum(w(:,:,3))./10;%%求各个类的协方差矩阵
sigma(:,:,1)= cov(w(:,:,1));
sigma(:,:,2)= cov(w(:,:,2));
sigma(:,:,3)= cov(w(:,:,3));%%构建判别函数,计算点到每个类的马氏距离以及欧氏距离
for i =1:3;
P(i)= mvnpdf(X,u(:,:,i),sigma(:,:,i))*p(i);
md(i)= sqrt((X-u(:,:,i))*inv(sigma(:,:,i))*(X-u(:,:,i))');
ed(i)= sqrt(sum((X-u(:,:,i)).^2));
end
%%%%%%%%%% End %%%%%%%%%%%判断样本属于哪个类的概率最高,并显示点到每个类的马氏距离和欧氏距离
maxP =max(P);
result = find(P==maxP);
fprintf("点[%s]关于第1、2、3类的判别函数值分别为:%s %s %s\n",num2str(X),num2str(P(1)),num2str(P(2)),num2str(P(3)));
fprintf("点[%s]到第1、2、3类的马氏距离为:%s %s %s\n",num2str(X),num2str(md(1)),num2str(md(2)),num2str(md(3)));
fprintf("点[%s]到第1、2、3类的欧氏距离为:%s %s %s\n",num2str(X),num2str(ed(1)),num2str(ed(2)),num2str(ed(3)));
fprintf("点[%s]属于第%s类\n",num2str(X),num2str(result));
end
% w1,w2,w3三类散点
w = zeros(10,3,3);
w(:,:,1)=[-5.01-8.12-3.68;...-5.43-3.48-3.54;...1.08-5.521.66;...0.86-3.78-4.11;...-2.670.637.39;...4.943.292.08;...-2.512.09-2.59;...-2.25-2.13-6.94;...5.562.86-2.26;...1.03-3.334.33];
w(:,:,2)=[-0.91-0.18-0.05;...1.30-.206-3.53;...-7.75-4.54-0.95;...-5.470.503.92;...6.145.72-4.85;...3.601.264.36;...5.37-4.63-3.65;...7.181.46-6.66;...-7.391.176.30;...-7.50-6.32-0.31];
w(:,:,3)=[5.352.268.13;...5.123.22-2.66;...-1.34-5.31-9.87;...4.483.425.19;...7.112.399.21;...7.174.33-0.98;...5.753.976.65;...0.770.272.41;...0.90-0.43-8.71;...3.52-0.366.43];%设置各类别先验概率
pw =[1/31/31/3];%样本矢量
X1 =[121];
X2 =[532];
X3 =[000];% 调用高斯型Bayes判别函数,输出判别函数值、马氏距离和判别结果
GuassianBayesModel(w,pw,X1);
GuassianBayesModel(w,pw,X2);
GuassianBayesModel(w,pw,X3);