朴素贝叶斯分类

参考:http://www.cnblogs.com/phinecos/archive/2008/10/21/1315948.html

朴素贝叶斯分类

 

也许你觉得这理论还不是很懂,那我再举个简单的例子,让大家对这个算法的原理有个快速的认识。(注:这个示例摘抄自《机器学习》这本书的第三章的表3-2.

假设给定了如下训练样本数据,我们学习的目标是根据给定的天气状况判断你对PlayTennis这个请求的回答是Yes还是No

Day

Outlook

Temperature

Humidity

Wind

PlayTennis

D1

Sunny

Hot

High

Weak

No

D2

Sunny

Hot

High

Strong

No

D3

Overcast

Hot

High

Weak

Yes

D4

Rain

Mild

High

Weak

Yes

D5

Rain

Cool

Normal

Weak

Yes

D6

Rain

Cool

Normal

Strong

No

D7

Overcast

Cool

Normal

Strong

Yes

D8

Sunny

Mild

High

Weak

No

D9

Sunny

Cool

Normal

Weak

Yes

D10

Rain

Mild

Normal

Weak

Yes

D11

Sunny

Mild

Normal

Strong

Yes

D12

Overcast

Mild

High

Strong

Yes

D13

Overcast

Hot

Normal

Weak

Yes

D14

Rain

Mild

High

Strong

No

 可以看到这里样本数据集提供了14个训练样本,我们将使用此表的数据,并结合朴素贝叶斯分类器来分类下面的新实例:

(Outlook = sunny,Temprature = cool,Humidity = high,Wind = strong)

我们的任务就是对此新实例预测目标概念PlayTennis的目标值(yesno).

由上面的公式可以得到:

可以得到:

      P(PlayTennis =yes) = 9/14 = 0.64,P(PlayTennis=no)=5/14 = 0.36

      P(Wind=Stong| PlayTennis =yes)=3/9=0.33,p(Wind=Stong| PlayTennis =no)=3/5 = 0.6

其他数据类似可得,代入后得到:

P(yes)P(Sunny|yes)P(Cool|yes)P(high|yes)P(Strong|yes) = 0.0053

P(no)P(Sunny|no)P(Cool|no)P(high|no)P(Strong|no)=0.0206

因此应该分类到no这一类中。

 

 

NB文本分类器 思路:(基于词频)

1.输入一个文档。
2.对每个文档的每个词进行p(word,classify)=p(word)*p(classf|word)计算。计算这个概率展开的先验概率和后验概率。(所以这里用到的都是tf-idf而已,没有用到熵,所以是非常朴素的贝叶斯)
3.然后将这个文档的所有词的概率p(word,classify)相乘,这样结果就是这个文档属于这个classify的概率了。、
4.对这个文档的所有class的概率排序,哪个class概率高,就认为该文档输入哪个class.

 

 

posted @ 2013-12-26 10:54  无脚的鸟  阅读(784)  评论(0编辑  收藏  举报