贝叶斯分类器之使用最小错误贝叶斯决策进行二分类

一、前言

  在之前的一篇文章贝叶斯分类器之统计决策方法和概率密度估计中,我们介绍了统计决策方法以及贝叶斯分类的概率密度估计,这篇文章,我们将使用之前介绍的概率密度的几种方法,进行实战,并观察它们之间的差别。

二、使用参数估计方法

  这一部分,我们已经在之前的一篇文章《贝叶斯二分类算法的实现》中实现了,下面只贴出代码以及运行结果。 源代码:

file_name=2-Class data.mat; load(file_name); t1=clock;% 开始计时 Training_class1=Training(:,Label_Training==1);% 第一类数据 Training_class2=Training(:,Label_Training==2);% 第二类数据 % 获取两类训练数据的数量与维度,b1、b2是维度,n1、n2是数量 [b1,n1]=size(Training_class1); [b2,n2]=size(Training_class2); % 获取测试数据的数量和维度 [b,n]=size(Testing); % 先验概率 pw1=n1/(n1+n2); pw2=n2/(n1+n2); % 概率密度估计,参数估计 [miu1,sigma1]=ParamerEstimation(Training_class1); [miu2,sigma2]=ParamerEstimation(Training_class2); % 初始化预测结果 predict_label=0; for i=1:n x=Testing(:,i); % 概率密度估计 pxw1=gaussian(miu1,sigma1,x); pxw2=gaussian(miu2,sigma2,x); % 判别函数 g_x1=pw1*pxw1; g_x2=pw2*pxw2; if g_x1>g_x2 predict_label(i)=1; else predict_label(i)=2; end end % 计算正确率 acc=sum(predict_label==Label_Testing)/n; t2=clock;% 结束计时 time=etime(t2,t1); fprintf(正确率是%.2f%%\n,acc*100); fprintf(运行时长是%.2fs\n,time);
<

运行结果: 贝叶斯分类器之使用最小错误贝叶斯决策进行二分类

三、使用非参数估计方法

a. Parzen窗法 编程思路:首先需要对数据进行等比例缩小,防止因数据过大,在计算小舱体积时发生溢出。其余思路与参数估计方法类似,只是类的条件概率使用Parzen窗法进行估计,Parzen窗采用方窗,小窗边长取1。 代码如下: (1)导入数据并对数据进行处理,防止运算过程中发生溢出

clear load(2-class Problem.mat); tic % 数据缩放,防止溢出 Training_class1=Training_class1/100; Training_class2=Training_class2/100; Testing=Testing/100;

(2)获取数据集信息(数量、维度等),并计算先验概率

% 获取数据集相关信息 [d1,n1]=size(Training_class1); [d2,n2]=size(Training_class2); [d,n]=size(Testing); % 先验概率 pw1=n1/(n1+n2); pw2=n2/(n1+n2);

(3)遍历测试样本数据,对每个数据进行分类

for i=1:n x=Testing(:,i); %用方窗: if pw1*Parzen(x,1,Training_class1)>pw2*Parzen(x,1,Training_class2) predict(i)=1; else predict(i)=2; end end

(4)计算正确率

acc=sum(predict==Label_Testing(1:n))/n; toc fprintf(正确率是%.2f%%\n,acc*100);

运行结果分析:使用Parzen窗法进行非参数估计可以直接估计概率密度,而不用估计相关参数,与参数估计方法相比,大大降低了运行时间,而且保证了二分类的正确率。 完整代码如下:

clear load(2-class Problem.mat); tic % 数据缩放,防止溢出 Training_class1=Training_class1/100; Training_class2=Training_class2/100; Testing=Testing/100; % 获取数据集相关信息 [d1,n1]=size(Training_class1); [d2,n2]=size(Training_class2); [d,n]=size(Testing); % 先验概率 pw1=n1/(n1+n2); pw2=n2/(n1+n2); predict=0; for i=1:n x=Testing(:,i); %用方窗: if pw1*Parzen(x,1,Training_class1)>pw2*Parzen(x,1,Training_class2) predict(i)=1; else predict(i)=2; end end acc=sum(predict==Label_Testing(1:n))/n; toc fprintf(正确率是%.2f%%\n,acc*100);
<

b.近邻法 编程思路:编程实现与使用Parzen窗法程序类似,只是在估计类的条件概率时,使用近邻法。N取2. 源代码:

clear load(2-class Problem.mat); tic % 数据缩放,防止溢出 Training_class1=Training_class1/100; Training_class2=Training_class2/100; Testing=Testing/100; % 获取数据集相关信息 [d1,n1]=size(Training_class1); [d2,n2]=size(Training_class2); [d,n]=size(Testing); % 先验概率 pw1=n1/(n1+n2); pw2=n2/(n1+n2); predict=0; for i=1:n x=Testing(:,i); if pw1*KNN(x,2,Training_class1)>pw2*KNN(x,2,Training_class2) predict(i)=1; else predict(i)=2; end end acc=sum(predict==Label_Testing(1:n))/n; toc fprintf(正确率是%.2f%%\n,acc*100);
<

运行结果分析:二分类中,使用近邻法的程序运行效率高于Parzen窗法,而且可以保证100%的正确率。

四、总结

  本文对比了使用最小错误贝叶斯分类器进行二分类决策时,采用不同方法进行概率密度估计的差异,发现所有概率密度估计方法都能达到100%的正确率,且非参数估计效率高于参数估计方法,这是因为非参数估计不需要任何参数就可以进行类的条件概率的估计,相比于概率密度估计方法,省去了估计参数的步骤。此外,非参数估计方法不受限于样本服从的分布类型。但是聪明的读者或许已经察觉到问题了,我们在之前的文章中讲过,我们使用的二分类样本实际上是线性可分的,所以,我们使用这些方法都可以达到完全正确的分类结果。因此,在实际中,非参数估计或许效率较高,但是分类正确率方面不一定比参数估计优异。因此,在接下来的文章中,我们将进行多分类的决策,到那时,样本将会是线性不可分的,我们将再一次比较参数估计与非参数估计的性能,大家拭目以待。

京云律所-娄底站 京云律所-朔州站 京云律所-枣庄站 京云律所-仁怀站 京云律所-罗定站 京云律所-扬中站 京云律所-甘南站 京云律所-荣成站 京云律所-原平站 京云律所-和龙站 京云律所-江门站 京云律所-会理站 京云律所-涟源站 京云律所-临汾站 京云律所-界首站 京云律所-阿里站 京云律所-中卫站 京云律所-个旧站 京云律所-奎屯站 京云律所-北安站 京云律所-漳州站 京云律所-银川站 京云律所-鞍山站 京云律所-阜新站 京云律所-北京站 京云律所-庐山站 京云律所-吐鲁番站 京云律所-弥勒站 京云律所-霍尔果斯站 京云律所-洮南站 京云律所-北海站 京云律所-宁安站 京云律所-柳州站 京云律所-万源站 京云律所-昆山站 京云律所-昌都站 京云律所-阿拉善站 京云律所-武冈站 京云律所-瓦房店站 京云律所-怀化站 京云律所-三亚站 京云律所-瑞安站 京云律所-枝江站 京云律所-湘潭站 京云律所-滕州站 京云律所-钦州站 京云律所-华阴站 京云律所-巴彦淖尔站 京云律所-嫩江站 京云律所-侯马站 京云律所-河池站 京云律所-绥化站 京云律所-乳山站 京云律所-南京站 京云律所-介休站 京云律所-绵竹站 京云律所-萍乡站 京云律所-海北站 京云律所-京山站 京云律所-四会站 京云律所-巩义站 京云律所-韩城站 京云律所-通化站 京云律所-兴义站 京云律所-六安站 京云律所-日喀则站 京云律所-额尔古纳站 京云律所-武安站 京云律所-邹城站 京云律所-肇庆站 京云律所-慈溪站 京云律所-兰溪站 京云律所-喀什站 京云律所-齐齐哈尔站 京云律所-玉林站 京云律所-焦作站 京云律所-讷河站 京云律所-茂名站 京云律所-安庆站 京云律所-禄丰站 京云律所-宜宾站 京云律所-张掖站 京云律所-霍林郭勒站 京云律所-昌邑站 京云律所-老河口站 京云律所-张家界站 京云律所-荔浦站 京云律所-黄南站 京云律所-利川站 京云律所-林州站 京云律所-巴中站 京云律所-信阳站 京云律所-周口站 京云律所-梅州站 京云律所-库车站 京云律所-宣威站 京云律所-自贡站 京云律所-遵义站 京云律所-泸水站 京云律所-宁波站

免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:贝叶斯分类器之使用最小错误贝叶斯决策进行二分类 https://www.yhzz.com.cn/a/13406.html

uboot调试技巧说明2
上一篇 2023-05-11 21:51:49
uboot调试技巧说明1
下一篇 2023-05-11 21:54:01

相关推荐

联系云恒

在线留言: 我要留言
客服热线:400-600-0310
工作时间:周一至周六,08:30-17:30,节假日休息。