📄 bayesianclassifier1.m
字号:
Pr_omiga1=input('请输入第一类的先验概率:');
Pr_omiga2=input('请输入第二类的先验概率:');
Num=20;
s1=mvnrnd([0 1],eye(2),Num)'
s2=mvnrnd([2 0],3*eye(2),Num)'
s11=s1(1,:);
s12=s1(2,:);
s21=s2(1,:);
s22=s2(2,:);
muGiven1=[0 1]';
sigmaGiven1=eye(2);
% 已知类别1的均值及及协方差
muGiven2=[2 0]';
sigmaGiven2=2*eye(2);
mu1=muGiven1;
sigma1=sigmaGiven1;
mu2=muGiven2;
sigma2=sigmaGiven2;
% 求正态分布条件下的基于最小错误率的Bayesian决策分类器的决策面
% 预求相关参量
W1 = -0.5 * inv(sigma1);
W2 = -0.5 * inv(sigma2);
omiga1= inv(sigma1) * mu1;
omiga2= inv(sigma2) * mu2;
omiga10= -0.5*mu1'*inv(sigma1)*mu1 -0.5*log(det(sigma1)) + log(Pr_omiga1);
omiga20= -0.5*mu2'*inv(sigma2)*mu2 -0.5*log(det(sigma2)) + log(Pr_omiga2);
% 决策面方程
DecisionBoundary = @(x) x'*(W1-W2)*x + (omiga1-omiga2)'*x + omiga10 - omiga20;
% 为了实现绘制隐函数图形而把DecisionBoundary函数改造成双参函数数
DB = @(x1,x2) DecisionBoundary(cat(1,x1,x2));
% 绘制决策面
hold on;
% 二维样本
% 绘制第1类的类中心mu及协方差
plot(mu1(1),mu1(2),'r.');hold on;
%ellipse(sqrt(sigma1(1,1)),sqrt(sigma1(2,2)),0,mu1(1),mu1(2),'k');
plot(s11,s12,'r O');hold on;
% 绘制第2类的类中心mu及协方差
plot(mu2(1),mu2(2),'b.');
%ellipse(sqrt(sigma2(1,1)),sqrt(sigma2(2,2)),0,mu2(1),mu2(2),'g');hold on;
plot(s21,s22,'b +');
% 绘制决策面
ezplot(DB);
title('基于最小错误率的Bayesian决策分类器');
legend('类别1的中心点','一类分布','类别2的中心点','二类分布','决策面',1);
axis equal;grid off;
axis tight;hold off;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -