实验1 贝叶斯分类实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一:贝叶斯分类实验
学时:4学时
实验目的:设计简单的线性分类器,了解模式识别的基本方法。掌握利用贝叶斯公式进行设计分类器的方法。
实验内容:
(1)
简单分类:有两类样本(如鲈鱼和鲑鱼),每个样本有两个特征(如长度和亮度),每类有若干个(比如20个)样本点,假设每类样本点服从二维正态分布,自己随机给出具体数据,计算每类数据的均值点,并且把两个均值点连成一线段,用垂直平分该线段的直线作为分类边界。再根据该分类边界对一随机给出的样本判别类别。画出如下图形。
提示:
1.可以入下产生第一类数据:
% x1是第一类数据,每一行代表一个样本(两个特征)
x1(:,1) = normrnd(10,4,20,1);
x1(:,2) = normrnd(12,4,20,1);
% 第2类数据
x2(:,1) = normrnd(15,4,20,1);
x2(:,2) = normrnd(13,4,20,1);
2.可假设分类边界为 kx-y+b=0,根据垂直平分的条件计算出k和b。
3.如果新的样本点代入分类边界方程的值的符号和第一类样本均值代入分类边界方程的符号相同,则是判断为第一类。
(2)
贝叶斯分类:根据贝叶斯公式,给出在类条件概率密度为正态分布时具体的判别函数表达式,用此判别函数设计分类器。数据随机生成,比如生成两类样本(如鲈鱼和鲑鱼),每个样本有两个特征(如长度和亮度),每类有若干个(比如20个)样本点,假设每类样本点服从二维正态分布,随机生成具体数据,然后估计每类的均值与协方差,在下列各种情况下求出分类边界。先验概率自己给定,比如都为0.5。如果可能,画出在两类协方差不相同的情况下的分类边界。
提示:
若第一类的样本为{}12,,n x x x ,则第一类均值的估计为1
1ˆn k k x n μ==∑,协方差的估计为1
1ˆˆˆ()()n T k k k x x n μμ=∑=--∑。若若第一类的样本为:
则均值的估计为:
134x ⎡⎤=⎢⎥⎣⎦238x ⎡⎤=⎢⎥⎣⎦326x ⎡⎤=⎢⎥⎣⎦446x ⎡⎤=⎢⎥⎣⎦
332431ˆ486664μ⎛⎫⎡⎤⎡⎤⎡⎤⎡⎤⎡⎤
=+++= ⎪⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦⎣⎦⎣⎦
⎝⎭ 协方差的估计为: [][][][]330111ˆ02021010462004⎛⎫⎛⎫-⎡⎤⎡⎤⎡⎤⎡⎤⎡⎤∑=--++-+ ⎪ ⎪⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥ ⎪⎣⎦⎣⎦⎣⎦⎣⎦⎣⎦⎝⎭⎝⎭ 000010101/201ˆ04040000024⎛⎫⎡⎤⎡⎤⎡⎤⎡⎤⎡⎤∑=+++= ⎪⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦⎣⎦⎣⎦
⎝⎭ 分类边界0()0t w x x -=可用专门绘制隐函数的ezplot 来绘制。
若求出了w 和0x ,如: w = [ -0.4127, -0.1641]’; x0=[12.2197, 12.5141]’; 则可用:
fh=@(x,y)w*([x,y]'-x0); %判别函数表达式
ezplot(fh,[0,20]) %画出判别边界
情况1. 两类协方差相同且和单位阵成比例的情况下的分类边界为:
0()0t w x x -=
其中 i j w μμ=-,2
02()1()()ln 2()i i j i j j i j
P x P ωσμμμμωμμ=+--- 判别边界是一条直线,且垂直于均值的连线,但不一定通过连线的中点。如下图:
情况2. 两类协方差相同且和单位阵不成比例的情况下的判别函数为:
0()0t w x x -=
其中 1
()i j w μμ-=∑-,01ln ()/()1().()2()()i j i j i j t i j i j P P x ωωμμμμμμμμ-⎡⎤⎣⎦=+---∑-。 判别边界仍是一条直线,但不垂直于均值的连线。
情况3. 两类协方差不相同的情况下的判别函数为:
判别边界为g1(x)-g2(x)=0,是一条一般二次曲线(可能是椭圆、双曲线、抛物线等)。
可用ezplot来绘制隐函数:
% 情况3. 两类协方差e1和e2不相同的情况下:
W1=-1/2*inv(e1);
w1=inv(e1)*u1;
w10=-1/2*u1'*inv(e1)*u1-1/2*log(det(inv(e1)))+log(2/5);%假设w1的先验概率为2/5
W2=-1/2*inv(e2);
w2=inv(e2)*u2;
w20=-1/2*u2'*inv(e2)*u2-1/2*log(det(inv(e2)))+log(3/5);% 假设w2的先验概率为3/5
fh=@(x,y)[x,y]*(W1-W2)*[x,y]'+(w1-w2)'*[x,y]'+w10-w20;% 判别函数表达式ezplot(fh,[0,20]) %画出判别边界