资源描述:
《朴素贝叶斯分类器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、朴素贝叶斯分类器NaiveBayesianClassifierC语言实现2013年2月8日1.贝叶斯公式通过贝叶斯公式,我们可以的知在属性F1-Fn成立的情况下,该样本属于分类C的概率。而概率越大,说明样本属于分类C的可能性越大。若某样本可以分为2种分类A,B。要比较P(A
2、F1,F2......)与P(B
3、F1,F2......)的大小只需比较,P(A)P(F1,F2......
4、A),与P(B)P(F1,F2......
5、B)。因为两式分母一致。而P(A)P(F1,F2......
6、A)可以采用缩放为P(A)P(F1
7、A)P(F2
8、A).......(Fn
9、A)因此,在分类时,只需
10、比较每个属性在分类下的概率累乘,再乘该分类的概率即可。分类属性outlook属性temperature属性humidity属性windnosunnyhothighweaknosunnyhothighstrongyesovercasthothighweakyesrainmildhighweakyesraincoolnormalweaknoraincoolnormalstrongyesovercastcoolnormalstrongnosunnymildhighweakyessunnycoolnormalweakyesrainmildnormalweakyessunnymildnormal
11、strongyesovercastmildhighstrongyesovercasthotnormalweaknorainmildhighstrong以上是根据天气的4种属性,某人外出活动的记录。若要根据以上信息判断(Outlook=sunny,Temprature=cool,Humidity=high,Wind=strong)所属分类。P(yes
12、sunny,cool,high,strong)=P(yes)P(sunny
13、yes)P(cool
14、yes)P(high
15、yes)P(strong
16、yes)/KP(no
17、sunny,cool,high,strong)=P(no)P(sunny
18、
19、no)P(cool
20、no)P(high
21、no)P(strong
22、no)/KK为缩放因子,我们只需要知道两个概率哪个大,所以可以忽略K。P(yes)=9/14P(no)=5/14P(sunny
23、yes)=2/9P(cool
24、yes)=1/3P(high
25、yes)=1/3P(strong
26、yes)=1/3P(sunny
27、no)=3/5P(cool
28、no)=2/5P(high
29、no)=4/5P(strong
30、no)=3/5P(yes
31、sunny,cool,high,strong)=9/14*2/9*1/3*1/3*1/3=0.00529P(no
32、sunny,cool,high,strong
33、)=5/14*3/5*1/5*4/5*3/5=0.20571No的概率大,所以该样本实例属于no分类。2.数据结构及代码实现1.属性及分类我们限定分类器的属性不大于9个,每个属性拥有不大于9个值。于是,我们考虑采用一个9X9的表格存储属性及其值。属性1值1值2值3值4值5值6值7值8值9属性2值1值2值3值4值5值6值7值8值9属性3值1值2值3值4值5值6值7值8值9属性4值1值2值3值4值5值6值7值8值9属性5值1值2值3值4值5值6值7值8值9属性6值1值2值3值4值5值6值7值8值9属性7值1值2值3值4值5值6值7值8值9属性8值1值2值3值4值5值6值7值8值9属性9值1
34、值2值3值4值5值6值7值8值9为了调用数据方便,我们把数据从第一行开始储存。为了充分利用存储空间,我们把第零行储存分类数据。分类1分类2分类3分类4分类5分类6分类7分类8分类9属性1值1值2值3值4值5值6值7值8值9属性2值1值2值3值4值5值6值7值8值9属性3值1值2值3值4值5值6值7值8值9属性4值1值2值3值4值5值6值7值8值9属性5值1值2值3值4值5值6值7值8值9属性6值1值2值3值4值5值6值7值8值9属性7值1值2值3值4值5值6值7值8值9属性8值1值2值3值4值5值6值7值8值9属性9值1值2值3值4值5值6值7值8值9现在,我们可以采用一个10X10的
35、表格来储存数据了。而每个单元格的内容需要占用一定的储存空间,我们可以用一个三维数组charfeature[10][10][10]来表示这种结构的数据。用来容纳9个属性的9个值。第0行,我们用来储存分类数据。而第一行的第一列没有被使用,而其中含有10个char类型的数据我们可以用它来储存属性值的多少。如图:分类的个数属性1值的个数属性2值的个数...........属性9值的个数前一段的数据:分类:yesno属性outlook:sunnyover