当前位置:文档之家› 模式识别实验报告2 贝叶斯分类实验 实验报告(例)

模式识别实验报告2 贝叶斯分类实验 实验报告(例)


'LineWidth',2,...
'MarkerEdgeColor','k',... 'MarkerSize',10)
'MarkerFaceColor',[0 1 0],... u1 = sum(x1,2)/20; u2 = sum(x2,2)/20;
x1count = size(x1,2);
x1t = x1-kron(u1,ones(1,x1count)); S1t = x1t * x1t' / x1count; x2count = size(x2,2);
2
ln
P( i ) ( i j ) P( j )
两类协方差不相同的情况下的判别函数为:
gi ( x) xtWi x wit x wi 0 1 Wi i1 2 w i i1i 1 1 w i 0 it i1i ln i ln P(i ) 2 2
tt2 = fsolve('bayesian_fun',5,[],t1,W1,W2,w1,w2,w10,w20); t2=[t2,tt2];
end
plot(1:23,t2,'b','LineWidth',3); %下面是 bayesian_fun 函数 function f=bayesian_fun (t2,t1,W1,W2,w1,w2,w10,w20) x=[t1,t2]'; f=x'*W1*x+w1'*x+w10- (x'*W2*x+w2'*x+w20); % f=bayesian_fun.m x=[t1,t2]';
x2t = x2-kron(u2,ones(1,x2count)); S2t = x2t * x2t' / x2count; St = (S1t+S2t)/2; w = St^(-1) * (u1-u2); k=-w(1)/w(2); x=[5,23];
x0 = (u1+u2)/2 - log(pw1/pw2)/((u1-u2)'*inv(St)*(u1-u2)) *(u1-u2); b = x0(2)-k*x0(1); plot(x,k*x+b,'g-.','LineWidth',3);
'LineWidth',2,...
'MarkerEdgeColor','k',... 'MarkerSize',10)
'MarkerFaceColor',[1 0 0],... x2(1,:) = normrnd(18,4,1,20);
2
x2(2,:) = normrnd(10,4,1,20); pw1=0.5; pw2=0.5; hold on; plot(x2(1,:),x2(2,:),'bo',...
ˆ 2.均值的估计为
1 n xk n k 1 1 n ˆ k )( xk ˆ k )T 。 ( xk n k 1 wt ( x x0 ) 0 , w i j
ˆ 协方差的估计为
两类协方差相同的情况下的分类边界为:
1
x0
1 2 ( i j ) 2 i j
实验报告(例 1)
课程名称: 模式识别 提交时间: 专业:计算机应用技术 一、实验目的和要求
目的:
掌握利用贝叶斯公式进行设计分类器的方法。
实验名称: 贝叶斯分类
年级: 2009 级
姓名:
要求:
分别做出协方差相同和不同两种情况下的判别分类边界。
二、实验环境、内容和方法
环境:windows XP,matlab R2007a 内容:根据贝叶斯公式,给出在类条件概率密度为正态分布时具体的判别函数表达式,用
此判别函数设计分类器。数据随机生成,比如生成两类样本(如鲈鱼和鲑鱼) ,每个 样本有两个特征(如长度和亮度) ,每类有若干个(比如 20 个)样本点,假设每类 样本点服从二维正态分布,随机生成具体数据,然后估计每类的均值与协方差,在 两类协方差相同的情况下求出分类边界。先验概率自己给定,比如都为 0.5。如果可 能,画出在两类协方差不相同的情况下的分类边界。画出图形。
方法:贝叶斯分类
三、实验过程描述
1.产生第一类数据: x1 是第一类数据,x2 是第二类数据,每一列代表一个样本(两个特征) x1(1,:) = normrnd(12,4,1,20); x1(2,:) = normrnd(20,4,1,20); x2(1,:) = normrnd(18,4,1,20); x2(2,:) = normrnd(10,4,1,20);
四、结果分析
在协方差相同的情况下,判别分类边界其实就是线性分类器产生的边界。在协方差不 同的情况下的二次线性分类边界有时会出现奇怪的形状,这应该是求得的解只是两个解中 一个解的原因。下面是得到比较好的结果:
30
25
20
15
10
5
0
5
10
15
20
25
30
35
五、附录代码
%主代码 clear;clc; randseed; x1(1,:) = normrnd(12,4,1,20); x1(2,:) = normrnd(20,4,1,20); plot(x1(1,:),x1(2,:),'ro',...
function f=bayesian_fun(t2,t1,W1,W2,w1,w2,w10,w20)
3
f=x'*W1*x+w1'*x+w10 - (x'*W2*x+w2'*x+w20);
4
S1tinv = inv(S1t); S2tinv = inv(S2t); W1=-1/2 * S1tinv; W2=-1/2 * S2tinv; w1=S1tinv*u1; w2=S2tinv*u2;
w1ቤተ መጻሕፍቲ ባይዱ=-1/2 * u1'*S1tinv*u1 - 1/2 *log(det(S1t)) + log(pw1); w20=-1/2 * u2'*S2tinv*u2 - 1/2 *log(det(S2t)) + log(pw2); t2=[] for t1=1:23
相关主题