用朴素贝叶斯分类器解决佩戴隐形眼镜问题1问题描述_第1页
用朴素贝叶斯分类器解决佩戴隐形眼镜问题1问题描述_第2页
用朴素贝叶斯分类器解决佩戴隐形眼镜问题1问题描述_第3页
用朴素贝叶斯分类器解决佩戴隐形眼镜问题1问题描述_第4页
用朴素贝叶斯分类器解决佩戴隐形眼镜问题1问题描述_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、用朴素贝叶斯分类器解决佩戴隐形眼镜问题1问题描述该实验采用机器学习方法中的朴素贝叶斯算法用于信息分类,问题的背景是根据一个人 的年龄,视力缺陷,散光和泪腺分泌情况决定其是否可佩戴隐形眼镜。1.1待解决问题的解释对于是否可配戴隐形眼镜,可把人们分为3类:类1:适于配戴硬性隐形眼镜;类2:适于配戴软性隐形眼镜;类3:不适于配戴隐形眼镜为了判断一个人是否适合配戴隐形眼镜,需要检查以下4种属性:属性a:配戴者年龄,取值a=年青、早期老视、老视属性b:配戴者的视力缺陷,取值b=近视、远视属性c:配戴者是否有散光,取值c=是、否属性d:配戴者泪腺分泌情况,取值d=少、正常上述属性和人群分类一律按顺序用数字

2、1, 2表示,可以假设根据属性a、b、c、d有如下 表的分类(纯属虚拟)1.2问题的形式化描述(可选)初始状态:某个测试例子集包括如下属性配戴者年龄、配戴者的视力缺陷、配戴者是否有散光、配戴者泪腺分泌情况后继函数:根据先验概率计算后继概率目标测试:输出 适于配戴硬性隐形眼镜,适于配戴软性隐形眼镜,不适于配戴隐形眼镜 路径耗散:可以转化为计算该方法的分类正确率1.3朴素贝叶斯介绍(原理)机器学习有三种类型:-有监督(有指导)学习一从其输入/输出的实例中学习一个函数-无监督(无指导)学习一在未提供明确的输出值情况下,学习输入的模式,要在概率推理系统的上下文中研究无监督学习-强化学习一从强化物中学习

3、,而不是根据指导进行学习学习结果的知识表示有三种形式:-逻辑公式(学到的规则)-贝叶斯网络(学到的概率描述)-线性加权函数(作为学习得到的启发函数)在本次实验中,采用了贝叶斯学习,这是一种有指导的学习方法。贝叶斯学习根据给定 数据计算各种假设的可能性,即根据概率为每个假设赋予相应的权值,然后在此基础上进行 预测。贝叶斯学习的特性:观察到的每个训练样例可以增量地降低或升高某假设的估计概率。先验知识可以与观察数据一起决定假设的最终概率。贝叶斯方法可以运行假设做出不确定性的预测。新的实例分类可由多个假设一起做出预测,用它们的概率来加权。即使在贝叶斯方法计算复杂度较高时,其仍可以作为一个最优的决策标准

4、衡量其它方法。在实践中,贝叶斯方法的难度在于,它们需要概率的初始知识。另一个实际困难在于,一般情况下确定贝叶斯最优假设的计算代价很大(可以采用朴素贝叶斯方法作为替代)。2算法介绍2.1朴素贝叶斯算法的一般介绍Naive Bayes Classifier是一种实用性很高的贝叶斯学习器/某些应用中性能与神经网络 和决策树相当(Mitchell)在其学习任务中,实例x由属性值的合取表示,目标函数(分类)f(x)属 于V(有限集合)输入为关于目标函数的训练样例和新实例的属性值z=va1,a2,an,输出=z的 分类按照极大后验概率取值的原则,其输出目标值应满足最大后验概率公式朴素贝叶斯分类器基于一个简

5、单的假设一在给定目标值时属性值之间相互条件独立,即P(a1,a2,anlvj)=ni P(ailvj)代入到前式当中得贝叶斯分类器输出函数vNB=arg maxvj V P(vj) Hi P(ailvj)估计每个P(ailvj)所需数据量比估计P(a1,a2,anlvj)要少得多基于训练数据的频率,可得P(vj)和P(ailvj)在分类(classification)问题中,常常需要把一个事物分到某个类别。一个事物具有很多 属性,把它的众多属性看做一个向量,即x=(x1,x2,x3,xn),用x这个向量来代表这个事物。 类别也是有很多种,用集合Y=y1,y2,ym表示。如果x属于y1类别,就可

6、以给x打上y1 标签,意思是说x属于y1类别。这就是所谓的分类(Classification)。x的集合记为X,称为属性集。一般X和Y的关系是不确定的,你只能在某种程度上说x有 多大可能性属于类y1,比如说x有80%的可能性属于类y1,这时可以把X和Y看做是随机 变量,P(YlX)称为Y的后验概率(posterior probability),与之相对的,P(Y)称为Y的先验概率(prior probability) 2。在训练阶段,我们要根据从训练数据中收集的信息,对X和Y的每 一种组合学习后验概率P(YlX)。分类时,来了一个实例x,在刚才训练得到的一堆后验概率中Hi找出所有的P(Ylx)

7、,其中最大的那个y,即为x所属分类。根据贝叶斯公式,后验概率 ?I在比较不同Y值的后验概率时,分母P(X)总是常数,因此可以忽略。先验概率P(Y)可以通过 计算训练集中属于每一个类的训练样本所占的比例容易地估计。2.2算法的伪代码Native_Bayes_Learn(examples)For each target value vj-P(vj)estimate P(vj)For each attribute value ai of each attribute aP(ai | vj)estimate P(ai | vj)Classify_New_Instance(x)Vnb = arg max

8、 P(vj)n P(aivj)v.ieVviex形式化表述为:Function:对测试用例进行分类Input :训练用例,测试用例Begin:读入训练用例,;统计训练样例总样例数和各个类别中样例的数目,计算出P(vi);统计每一属性其所有属性值在每个类别中分别出现的次数,计算出每个P(ai|v.);while(还有测试用例没有预测)读入一个测试用例;对每个类别j,计算P(v.)rj P(ailv.),选出计算值最大的类别作为当前测试用例的预测分类值;读入下一测试用例;End whileEnd主流程如下:3算法实现3.1实验环境与问题规模a)实验环境硬件环境:PC机;软件环境:Windows X

9、P OS;Eclipse IDEb)问题规模采用如下24条样例进行训练和测试:序号abcdw序号abcdw1111131322113211122142212231121315222134112211622223512113173111361212218311237122131931213812221203122192111321321131021122223212211212132332213122122124322233.2数据结构1)定义了一个 BayesClassfier 类:public class BayesClassfier Map kindMap;int n_train;/训练集

10、的条目数;int n_test;/测试集的条目数;int num_value; /记录每个属性拥有的属性值数目;int m; /等效样本大小;void train(String filename)/训练void test(String filename)/测试2)定义了一个Kind类,用于记录一个类别中样例数目和此类别下各属性的属性值出现的 次数等:class Kindint num;/记录这个类别中样例的个数Map attribute ;/记录各个属性的属性值及这个属性值的个数 其中训练样例集,输入样例集都通过两个txt文档进行读入,输出结果也以txt形式展现。3.3实验结果选用24条中的1

11、6条作为训练样例,剩余8条作为测试样例。选用不同的训练样例和测 试样例,同时分别选用标准贝叶斯分类器和改进的分类器,实验结果如下:实验编号训练数据测试数据标准分类器(m=0)改进分类器(m=3)正确数正确率正确数正确率11-1617-2410.12560.7529-241-820.2570.87531,2,4,5,7,8,10,11,13,14,16,17,19,20,22,233,6,9,12,15,18,21,2450.62560.7531-4和9-12 和17-245-8和13-1670.87570.8753.4系统中间及最终输出结果(要求有屏幕显示)1)实验1时,m=0时的输出结果:F

12、 F F p-5 5 s s1111amaaawnLl-rmLl-rHl/HRB_,;l/nw i口士 口士口士口士口士口士士口 E-HL .i二 3二 3:2ssns.Qns.ss.Rn-VP- - X-SXAJ 和航kw.知.钮所疝一切p_1:瓦物1枷物打砧656舟魂;喉别潟布类别吁皓果:圮如 p_1:8.8mi?96875 瞬囹推凳裱引:厂结果:汕e p_1;0.睥W9荷5瓣族胪3笄主弥3结果:trueP_1:0.01925390625侬成熟:1菊噗3:1健呆:廿如 p_1:8.13鼬顶3333獭峰7 须很挨到:3实际翔睥绐呆:比院 :以am仙幌5 飕尊件 买珂妙仪 劳臬:也 p_1:8

13、.efl24M*M35简撕:3蛾关抻皓果旧UP pJzfl.WIBZS预源类别:1卖标类别:3结杲:和0实验1时,m=3时的输出结果:p_3: L QS77 四待57 啊期焰p_2i8.0 B3 胴砧 5? 76676394Sp_3:0.0做 051 眄吐 1 曲 92777 p_2:0.110248524781 跆 110K21J5775179611fl 28.199788*5邪 1 的孙E-AI_3:0.白盟4 网452 口 网 93 05555p_2:0.甄 S5597*6763848pj:. 0B92120177 517肺 1 朗p_2:&. 03 蜩砧舛荷。林倒辙p3:0.峨旎料5

14、戏搠 3 峥 5p?: E 011 皿 0527813 1pl3:0.明 98079937855? 7219 p_3:BB00820EB3767361111 pl3 = 0.006851671 明网叫命 P_3: r 011m 毗6阪的岫4嵯 觐样仰擞氾预网正蹶祥例数油正商率:fl-75m srir ;K,3f,M T 3CJUL3LM jr JC.JLXX X w m ,寸:K*,S*,M *f 3CJUL3L3E w jr m m w jr jg m:3至果:比聘皓第:Eiep_2:OM00163mifi02B9B7pl?;. 0220431 D4956Z&822_pj:0.0919679

15、3602(1 pj:tuimi139322il66644667预雨峡别唔 实际类别噫 结呆吐海pl2:0.0D9BW6793 83291 一p_2:9.8K459912536W U84pj: 0 B 60214M?5p_虱耻盟蕴岫 105626822 p_1:1.0068359375p_2;0.0D6i?6 p J: 0. WM62?6 m 6660667p_2: 0. (11160131155335276p 1:8.HW5S9K2f fi_l78.W32421S75p 1;0.815J925 瓶*甘 琮. 瓣橱Jp_1ia.fl144USM7Sf_3:1 01Ep_

16、2:0. Cp_l:C.O预河.类别:3实际类别:N结果:丘访f_3:1 00E75 p_2:C.O23333:33333333E32 p_l:C.O预沌美另/ 实诳美却一: 结果:tru 已p_3:D.O15p_2:0. 0p_l:0.0预测类别:3瑜类别:3结杲:也己F_3:l 00-75 p_2:C.O p_l:O. 3 预秘类祈:3 号阴类别:1 垢果:fal=e p_3:D.O15p_2:0. 0p_l:0.0预?则类别:3新美别:3结果:丘访f_3:1 00E75 p_2:C.O23333:33333333E32 p_l:C.O预池类别:E 实孩类月成 结耒:tru已p_3:D.O

17、15p_2:0. 0p_l:0.0预测类别:3瑜恙别:3结杲:也己F_3:l 00-75 p_2:C.O p_l:O. 3预迥类引:3笺蚯类别:3垢果:比拍 总洌玄祥例数:%预测正涂的样例数:7正确率:(375*:Kx:i:* 布牝 Kxx* 布相布牝 K=XlHlXlHlXDClIXSIlIKXtKXIICKXiniXiniXSXSIlIXXtKXtKXiniXp 3:0.006T208L247155211?n_v.Ci;-i-ri5F;T7 _:;: 一 .|.】土土./XII: p_3:0.006720812471552117m=3时的输出结果:0.OOWS125p_l:9.765&2E

18、E MO:3 雾懑别:3 结呆:trueO.OM64附5p_l:0. 0029296S75预斗身展 躺麴1:2 哲果:tiuc _.m眨倾4166豌愤7 ?_ :.! 002929875 脚翩:3 辆类别:3培呆:true 0. OO4SS20125 p_l:0. 0087SW5预浙庚剧:1 ;获爻项一:1结呆:廿博0.004B82B125 p_l:9.765625E-4 丽胰别:3 卖时轴:3 结果:tniu 0.014&4W5 pJ:0. 00292W5而可切削:; 踽翱1:2 筮果:Hue _1 0016276041666666667 p_L:Q. 0029296875测麴 1|:3 三

19、和习一::结呆:truer_ _0.OOWS125 p_l:0. 00878W5预辨挨别:1 嘛两 1:3 第M:上匕匚即岫擞;8嘛怔确的君擞T王碑辜:i .言参考文献1机器学习,Tom M.Mitchell机械工业出版社,2009石志伟,吴功宜,“基于朴素贝叶斯分类器的文本分类算法”-第一届全国信息检索与内容 安全学术会议,2004洞庭散人,“基于朴素贝叶斯分类器的文本分类算法(上)”,“基于朴素贝叶斯分类器的 文本分类算法(下)”,2008DL88250, “朴素贝叶斯中文文本分类器的研究与实现(1)”,“朴素贝叶斯中文文本分类器 的研究与实现(2)”,2008附录一源代码及其注释impo

20、rt .BufferedReader;import .File;import .FileNotFoundException;import .FileOutputStream;import .FileReader;import .IOException;import .PrintStream;import .HashMap;import .Map;import .SSLContext;public class BayesClassfier Map kindMap;int n_train; /训练集的条目数;int n_test; /测试集的条目数;int num_value;int m;void

21、 train(String filename)Kind kindtemp;try BufferedReader in = new BufferedReader(new FileReader(new File(filename).getAbsoluteFile();try String s ;while(s = in.readLine()!=null)n_train+;String record = s.split(,”);/for(int i=0;ih;i+).print(recordi+);.println();/输出一下读入值String kind = recordh-1;kindtemp

22、 = (kind);if(kindtemp=null) kindtemp = new Kind(h-1);+;for(int i=0;ih;i+)Integer freq = butei.get(recordi);butei.put(recordi, freq = null ? 1 : freq+1); (kind, kindtemp); catch (IOException e) e.printStackTrace(); catch (FileNotFoundException e) e.printStackTrace();void test(String filename)Kind kin

23、dtemp;PrintStream ps = null;try FileOutputStream fos =new FileOutputStream(test_);ps = new PrintStream(fos); catch (IOException e) e.printStackTrace();if(ps != null) t(ps);try BufferedReader in = newBufferedReader(newFileReader(new File(filename).getAbsoluteFile();String s;int right=0;.println(mmmmm

24、mm” try while(s = in.readLine()!=null)n_test+;String record = s.split(,”);double p_ max=0;String kind_max=null;/.println(总条目数为+m);for(String kind : t()double p,p1,p2=1;kindtemp = (kind);/.println(当前类别 + kind+的条目数为: + );p1=(double)/(doUble)n_train;for(int i=0;i=p_max)p_max = p;kind_max = kind;/这一样例的分

25、类结果.println(预测类别U :+kind_max+” 实际类 另lj :+recordh-1+ 结果:”+(recordh-1.equals(kind_max);if(recordh-1.equals(kind_max) right+;.println(总测试样例数:+n_test+” 预测正确的样例 数:+right);.println(正确率:+(doUble)right/(doUble) n_test);.println(mmmmmmm” catch (IOException e) / TODO Auto-generated catch block e.printStackTra

26、ce(); catch (FileNotFoundException e) / TODO Auto-generated catch block e.printStackTrace();void test2(String filename) Kind kindtemp;PrintStream ps = nUll;try FileOutputStream fos =new FileOutputStream(test_); ps = new PrintStream(fos); catch (lOException e) e.printStackTrace();if(ps != null) t(ps)

27、;try BufferedReader in = newBufferedReader(newFileReader(new File(filename).getAbsoluteFile();String s;int right=0;n_test=0;.println(n大大大大大大大大大大大大大大大大大大大大大大大大大大大大大大大大大大大大大大大大大大ntry while(s = in.readLine()!=null) n_test+;String record = s.split(,”); double p_max=0;String kind_max=null;/.println(总条目数为+m);for(String kind : t() double p,p1,p2=1; kindtemp = (kind);/.println(当前类别 + kind

温馨提示

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

评论

0/150

提交评论