使用朴素贝叶斯进行分类
分类阶段比较简单,直接应用贝叶斯公式就可以了,让我们试试吧!
通过训练,我们得到以下概率结果:
比如下面这句话,要如何判断它是正面还是负面的呢?
I am stunned by the hype over gravity.
我们需要计算的是下面两个概率,并选取较高的结果:
P(like)×P(I|like)×P(am|like)×P(stunned|like)×...
P(dislike)×P(I|dislike)×P(am|dislike)×P(stunned|dislike)×...
因此分类的结果是“讨厌”。
提示 结果中的6.22E-22是科学计数法,等价于6.22×10-22。
哇,这个概率也太小了吧!
是的,如果文本中有100个单词,那乘出来的概率就会更小。
但是Python不能处理那么小的小数,最后都会变成零的。
没错,因此我们要用对数来算——将每个概率的对数相加!
假设一个包含100字的文本中,每个单词的概率是0.0001,那么计算结果是:
>>> 0.0001 ** 100
0.0
如果我们用对数相加来运算的话:
>>> import math
>>> p = 0
>>> for i in range(100):
... p += math.log(0.0001)
...
>>> p
-921.034037197617
提示
- bn = x 可以转换为 logbx = n
- log10(ab) = log10(a) + log10(b)