• 使用朴素贝叶斯进行分类

    使用朴素贝叶斯进行分类

    分类阶段比较简单,直接应用贝叶斯公式就可以了,让我们试试吧!

    使用朴素贝叶斯进行分类 - 图1

    通过训练,我们得到以下概率结果:

    使用朴素贝叶斯进行分类 - 图2

    比如下面这句话,要如何判断它是正面还是负面的呢?

    I am stunned by the hype over gravity.

    我们需要计算的是下面两个概率,并选取较高的结果:

    1. P(likeP(I|likeP(am|likeP(stunned|like)×...
    2. P(dislikeP(I|dislikeP(am|dislikeP(stunned|dislike)×...

    使用朴素贝叶斯进行分类 - 图3

    因此分类的结果是“讨厌”。

    提示 结果中的6.22E-22是科学计数法,等价于6.22×10-22。

    使用朴素贝叶斯进行分类 - 图4

    哇,这个概率也太小了吧!

    是的,如果文本中有100个单词,那乘出来的概率就会更小。

    但是Python不能处理那么小的小数,最后都会变成零的。

    没错,因此我们要用对数来算——将每个概率的对数相加!

    假设一个包含100字的文本中,每个单词的概率是0.0001,那么计算结果是:

    1. >>> 0.0001 ** 100
    2. 0.0

    如果我们用对数相加来运算的话:

    1. >>> import math
    2. >>> p = 0
    3. >>> for i in range(100):
    4. ... p += math.log(0.0001)
    5. ...
    6. >>> p
    7. -921.034037197617

    提示

    • bn = x 可以转换为 logbx = n
    • log10(ab) = log10(a) + log10(b)