正态分布贝叶斯分类器的实现_第1页
正态分布贝叶斯分类器的实现_第2页
正态分布贝叶斯分类器的实现_第3页
正态分布贝叶斯分类器的实现_第4页
正态分布贝叶斯分类器的实现_第5页
免费预览已结束,剩余12页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用为/4大挈实告课程名称:模式识别实验项目:正态分布贝叶斯分类器的实现专业班级:计算机应用技术1605班姓名:柯壬锭学号:姓1610262指导教师:李威成绩:沈阳工业大学实验报告(适用计算机程序设计类)专业班级:计算机应用技术1605班学明 201班0262姓名:柯干锭实验名称:正态分布贝叶斯分类器的实现一、实验目的1、 了解模式识别中的统计决策及贝叶斯分类器原理;2、 熟悉并会根据给出的相关数据设计正态分布贝叶斯分类器;3、 熟悉并会使用C+并调用OpenCV进行相关程序的编写。二、实验原理1、贝叶斯公式贝叶斯定理于1763年提出,它的表述为:设试验£的样本空间为S,八为E 的事件

2、,Bi,B2,Be 为 S 的一个划分,且 P(A)>0 , P(8少>0(/=l,2,c),则:ps 小P(4固)P(B,)_ P(4|BJP(B,)P)浜(姻)P-P(4)该公式称为“贝叶斯公式”,其中:P(8称为后验概率(Posterior Probability),表示事件4出现后,各不相容的 条件8,存在的概率,它是在结果出现后才能计算得到的,因此称为“后验”;P(04)称为类条件概率(Class-conditional Probability),表示在各条件8,存在 时,结果事件4发生的概率。2、贝叶斯分类想如果把样本属于某个类别作为条件,样本的特征向量取值作为结果,则

3、 模式识别的分类决策过程也可以看作是一种根据结果推测条件的推理过程。它 可以分为两种类型:2.1确定性分类决策特征空间由决策边界划分为多个决策区域,当样本属于某类时,其特征向 量一定落入对应的决策区域中,当样本不属于某类时,其特征向量一定不会落 入对应的决策区域中:现有待识别的样本特征向量落入了某决策区域中,则它 一定属于对应的类。图1确定性决策分类图2. 2随机性分类决策特征空间中有多个类,当样本属于某类时,其特征向量会以一定的概率取 得不同的值;现有待识别的样本特征向量取了某值,则它按不同概率有可能属 于不同的类,分类决策将它按概率的大小划归到某一类别中。图2随机性分类决策图3、最小错误概

4、率贝叶斯分类器把代表模式的特征向量X分到C个类别(31,32,3c)中某一类的最基 本方法是计算在X的条件下,该模式属于各类的概率,用符号 PQilx), PQzlx),,P(g|x)表示。比较这些条件概率,最大数值所对应的 类别例就是该模式所属的类。因此,基于贝叶斯最小错误率的二类分类决策规 则可以表述为如下表达式。(P(3i|x) > P(co2|x) G a)1(P(a)2|x) > P(3ix)x G a)2同理,推广到多类分类,比如说有M类时,贝叶斯最小错误率分类决策规 则可以做出如下表述:4、最小风险贝叶斯分类器由于客观事物的复杂性,分类器做出各种判决时的风险是不一样的

5、。例如 将癌细胞误判为正常细胞的风险就比将正常细胞误判为癌细胞的风险大。因 此,在贝叶斯分类器中引入了风险的概念。在实际应用中根据具体情况决定各 种风险的大小,通常用一组系数句来表示。句表示分类器将被识别样本分类为",而该样本的真正类别为叼时的风险。设计最小风险分类器的基本思想是用 后验概率计算将x分类为的条件风险比较各Ri(x)的大小,与最小值对应的类 别是分类的结果。评价这种分类器的标准是平均风险,它的平均风险最小。5、正态分布模式的贝叶斯分类器许多实际的数据集:均值附近分布较多的样本:距均值点越远,样本分布越少。此时 正态分布(高斯分布)是一种合理的近似。正态分布概率模型的优点

6、:* 物理上的合理性。* 数学上的简单性。Dea一u;wnKn4MmKsss* 口*UOH 丑 H wmMISs甥2:中翁怔sWKilhgMtt济s;Ei居 前北斗界却门塞却追西.布的却M工taElBE三 fEEIUiMgrttt:r 2 1 8-6 1图3某大学男生身高分布数据图图中为某大学男大学生的身高数据,红线是拟合的密度曲线。可见,其身 高应服从正态分布。三、贝叶斯分类器的应用贝叶斯网络可充分利用属性变量之间的依赖信息,因而应用十分广泛。主 要包括如下一些:医疗诊断、在线故障诊断、可靠性分析、军事目标识别、多目 标跟踪、生物信息学中的基因序列分析等。贝叶斯网络也应用于图像处理,模 式识

7、别和机器视觉领域,这些应用研究是很有前景的。贝叶斯分类器是用于分 类的贝叶斯网络,是进行预测的有力工具。四、程序设计流程图图4程序设计流程图五、实验内容1、数据集在试验中我们选取了 230名文理科生的数学成绩和语文成绩,文件 studentgrade.txto其中第一位学生的数学成绩,第二个为语文成绩,第三个数 字代表文理科生(1代表文科生,2代表理科生)。我们假定:(所有课程的成 绩范围是0到100分)文科生的数学成绩服从均值为60,标准差为10的正态 分布,文科生的语文成绩服从均值为80,标准差为10的正态分布理科生的数 学成绩服从均值为80,标准差为10的正态分优,理科生的语文成绩服从均

8、值 为60,标准差为10的正态分布。分布范围如下所示:图5学生成绩正态分布图2、主要代码本文用C+语言和调用OpenCV实现了对学生成绩的分类,程序主要设计 部分代码及说明:voidGenerateTrainData_two_feature(intsample countsoublemiul.doublesigmal.doublemiuZ.doublesigmaZat&train.data);voidMixTrainDataFromTwoClassesfMat&train_datalat&traindataZat&total train data,Mat&

9、;totaLtrain_data_response);intmain(intargc,char*argv)intfeatures count=2;intSampleCountl=200;训I练数据集1的样本个数MatTrainDatal(SampleCountl/features_count/CV_32FCl);doublesigmal2=10;doublemiul2=80;GenerateTrainData-twO-featurefSampleCountmiulligmal l,miul2,sigmal2,TrainDatal);cout«endl<”文科生的成绩分布规律&q

10、uot;vvendl;cout<<“数学成绩的分布参数:均值60,和标准差10"<<endl;coutvv”语文成绩的分布参数:均值80,和标准差10"«endl;intSampleCount2=200;MatTrainData2(SampleCount2,features_count,CV_32FCl);doublesigma21=10;doublemiu21=80;doublesigma22=10;doublemiu22=60;GeneateTrainData_two_feature(SampleCount2,miu21,sigma2

11、LmiuZZsigmaZZJTainDataZ);cout«endl<”理科生的成绩分布规律"<<endl;coutv<“数学成绩的分布参数:均值80,和标准差10n«endl;coutv<“语文成绩的分布参数:均值60,和标准差10u«endl;intTotalSamplesCount=SampleCountl+SampleCount2;MatTotalSamplesDataJTotalSamplesCountJeatureS-COunt.CV-SiFCl);MixTrainDataFromTwoClasses(Train

12、Datal/TrainData2/TotalSamplesData,S amplesResponse);CvNormalBayesClassifiernb_classifier=CvNormalBayesClassifier 0;MatVarldx=Mat(); MatSampleldx=Mat(); nb_classifier.trai nfTotalSamplesDataamplesResponsearldxampleldxJalse);floattest sample302=56/78/63/90)/50/80/60/70/65/90/73/53/75/54/80/50/90/60h 9

13、3,50,56,69),76,69,59,96,5伉98,82,56,90,56),69,69,89,63,69,89,70,69,56,78,63,90,51,80,62,80,65,90,73,53,75,54,80,50,90,60,93,50;Mattest_samplel(302CV_32FCl,testsample);六、实验结果程序的运行结果如下,F:vc2010bayesDebugbayes.exe0 011D 口X八夫值值 均均 律: 患数更,参分事 绩贫力 成的的 的生ST文教语0 011均均律:翳数雪参分需 绩奈的 的 生SXX理敌语主贝曼-二五g; 000034000

14、4 a 8980955565学7 . 一于6>630ha 53小於I; 09 , 7 9 , 9 9 6 8 6 6 9 6 6 9 9 5 5 6005350036696209566778995755896«* 9 9 ->3 9 «9 9 7 9 - 9 3998000034000 686798895556599063125350038675656677879文科生类别标签是,理科生类别标签是2图6测试样本运行结果图以数学语文联合特征分类结果: F:vc2010bayesDebugbayes.exe教学语文朕合特征分类结果.ci;1;1;1;1;2;2;25

15、2;2;1;2;I ;1;2; 2;1;2;1;1; 1;1; 1;2;2;2;2;2J图7数学语文联合分类结果 以数学为特征的分类结果:F F:vc2010bayesDebugbayes.exe以数学成绩为特征体分类结果:11;1;1:1;1;2;2;2;2;1;2;1; 1;2;2;1;2;1;2;2;2;2;2图8数学分类结果图以语文为特征的分港结果:Fj F:vc2010bayesDebugbayes.exe以语文成绩为特征的分类结果:C1;1;1;2;2; 2;2;2;2;2;1;1;2;2;2;2;1;2;1;1;1; 1;1;2; 2;2; 2;2图9语文分类结果图 判别分类器界

16、面:图10分类器判别面在此判决面中蓝色代表第1类:文科生,红色代表第二类:判决面中从左往右的顺序是语文成绩依次增加,从上往下的顺序是数学成绩依次增加。在以数学为单一特征进行类时,有6个学生的身份被误判,错误率约为0.2: 以学生的语文成绩为单一特征对学生的身份进行判别时,有7个学生的身份被 误判,错误率约为0.23;而当以数学和语文这两个特征联合对学生的身份进行 分类时,只有3个学生的身份被误判,错误率约为0.1。可以看出当以单一特征对学生身份进行判别时所出现的误判率明显比多 特征联合判别时出现的误判率要高,这在一定的程度上验证了多特征同时考虑 时更能提高判别的正确率。七、总结由于时间及知识水

17、平有限,本次课题依然有很多不足之处,如样本数据不 具有代表性,训练的样本数量比较小,测试结果的错误率在10%左右,这显然 达不到实际应用的要求,同时处理的数据维数太低(只是二维的)等,但通过 这次学习,我受到很多启发,对正态模式的贝叶斯分类器也有了更深入的理解。附件A沈阳工业大学实验报告(适用计算机程序设计类)专业班级:计算机应用技术1605班学号:201班0262姓名:柯于锭 本实验程序:#include <iostream>#include <opencv2/opencv.hpp>usingiiamespace std,usingnamespace cv,voidG

18、enerateTrainData_two_feature(int sainple_counts,doublemiu 1.double sigmal.double miu2.doublesigma2,Mat& train-data).voidMixTramDataFromTwoClasses(Mat& tran_datal,Mat& tran_data2,Mat<fc total_train_data, M at& total_tran-dataj-esponse), intmam(int argq chara argv)(int features_coun

19、t = 2»int SampleCountl = 200,M at TranData 1(S ampl eCountl, features-count, CV_3 2FC1);double sigmal 1 = 10vdoublenuul 1 =60,double siginal? = 10y double miul2 = 80,GenerateTranData_two_feature(SampleCountl,miull.sigmal l,nuul2,sigmal2,TranDatal);cout<<endl<<文科牛的成绩分布规律"<<

20、;endl,cout一数学成绩的分佰参数:均值60,和标准110"<<endl,*语文成绩的分俗参数:均值80.和标准片10"«endl,int SampleCount2 = 200,M at TranData2(S ampl eCount2t features-count. CV_3 2FC1).假定理科生的数学成绩的概率密度分布参数:均值80,和标准层10double sigma21 = 10; double iniu21 = 80,假定理科生的语文成绩的概率密度分布参数:均值60,和标准度10double sigma22 = 10t double

21、miu22 = 60,调用该函数生成理科生特征训练集Gen erateTtamData_two_fuature(SampleCount2,mm2 l,si gma21,miu22,sigma22,TramData2); cout<<en(!<<理科生的成绩分布规律"<<endl, coutvv1数学成绩的分布参数:均值80.和标准410"«endl, cout<<*语文成绩的分俗参数:均值60.和标准星10"«endl, int TotalSamplesCount = SampleCountl S

22、ainpleCo,jnt2, Mat TotalSamplesData(TotalSamplesCount>featuresj:ount.CV_32FCl), 卜介曲个类的iJl 练一木 Mat SaniplesResponse(TotalSamplesCount, l,CV_32FCl)t 。/ J 力;关£ .卜 MixTrainDataFromTwoClasses(TrainDatal,TranData2,TotalSaiiiplesData.SamplesResponse), CvN ormal B ay esCl as si fi er nb_classifier =

23、 CvNormalEayesClassifierO, / Mat VWdx = MatO;默认使用样本的所有特征训练分类忌共两个特征Mat Sampleldx = Mat。,默认使用样本集合中的所有样本训练分类匕nb_classifier train(TotalSamplesData.SamplesRespon$e»Varldx,SampleIdx, false), float testsainple 102= (30,50),(40,90),(50,60),(60,60),(65,70),(70,40),(75,30),(SO,50),(90,60),(100,100); Mat

24、test_sample 1(10,2,CV_32FC1,testsample).cout<<endl<<B10 个学牛:成绩测试样本:数学:语文<<endl<<test_samplel<vendl, 8ut«endl<<文科生类别标签是1 ,理科生类别标签是2-«endl, M at test_result2 D(10tl.CV_32FCl);nb_classifier predict(test_sample 1, &test_result2 D);8ut<<*数学语文联合特征分类纪果:y

25、stjesukZDvvendLCvNormalBayesClassifier nb_classifierl DO = CvNormalBayesClassifierQ. int featurejndex0l = (0), Mat FeatureIdxO(l>ltCV_32SCl.feature_indexO).nb_classifierlD0 tran(TotalSamplesData.SainplesResponse,FeatureIdxO»SampleIdx,false), Mat test_resultl D0(l 0,1 ,CV_3 2FC1)» nb-cla

26、ssifierlDO predict(test_sanplel,&test_resultlDO), cout< <1以数学成级为特征的分类结果:"< <test_re$ultlD0«endl,CvNormalBayesClassifier nb_classifierlDl = CvNormalBayesClassifierO. int feature_indexll = (1), Mat Featureldxl(l J.CV_SZSCl.featurejndexl), nb_classifierlDl tran(TotalSamplesDat

27、a>SamplesResponse>FeatureIdxl>SampleIdx.false); M at testresultlDl(10.1,CVJ 2FC1). nb_classifierlDl predict(test_samplel,(fctest_resultlDl), cout<<11以语文成绩为特征的分类结果:"<<test_resultlDl«endl, MatTestSamples(101a101>2,CVJ2FCl). for(int i=0;i<101»i*+) ( for(intj=0j

28、<101 (TestSaniples.at<float>(i*l 0= i.TestS aniples.) Mat TestSamplesResult(101*101,l.CV_32FCl), nb_classifier predictCTestSainples.&TestSainplesResiilt), Mat result jnapClOlJOLCV_SUCS), for(int i=0,1<1011+) ( for (int j=0 j<101 j+) ( int label = (mt)TestSaniplesResult at<float

29、>(is 101 Vec3b v = labd=”ec3b(255,0.0): V”3b(0,0,255); resxiltjnap at<Vec3b>(i,j) = v») namedWindow("分类彳;可决而,0), imshowC 分类得利决向 jesult_map), 8ut<vedl<<判决面中蓝色代表第1类:文科生,红色代表第二类:理科生y<endl.cout<u判决而中从左往小的喉字是语文成绩依次增加,从上往卜的顺序是数学成纳依次增加H«endLwatKey(O), return I.)voidMi

30、xTraiiiDataFromTwoClasses(Mat& tran_datal,Mat& tran_data2»Mat& total_tram_data>Mat/ total_train_datajesponse) (Size szl = train_datal size。,Size sz2 = tran_data2 size。;CV_Assert(szl width=sz2 width), / l/ ill 每个类佗 il -1 /扑:犷用征抖忆:卜的 total_tran_data = Mat zeros(szl heigh计sz2 height

31、.szl width.CV_32FC1), total_train_data_response = Mat zeros(szl height+sz2 height, 1,CV_32FC1),int loops = std mm(szl heighlsz2 height),bool morel = (loops = sz2 height), intk = 0;for(int i=Oti <loopsj+)memcpy(total_train_dataptr<float>(k),tram_datal ptr<float>,szl widthfsjzeofCfloat)

32、. total_train_data_response at<float>(k) = 1, k+.memcpy(total_train_dataptr<float>(k),train_data2 ptr<float>(i),sz2 widths(sizeof(noat), total_train_data_response at<float>(k) = 2t k+,)if(szl height > sz2 height)(for(int i = sz2 height,i<szl height+)memcpy(total_train_dataptr<noat>(k),train_datal ptr<float>(i),szl widths(s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论