垃圾邮件分类之朴素贝叶斯算法实践

朴素贝叶斯,英文名称为Native Bayes,是一种基于概率论的机器学习算法。命名为朴素,是因为它基于一个很纯粹,很淳朴的假设。首先,它假设每个事件(特征)是独立互不影响的;其次,它假设每个事件(特征)同等重要。用数学公式表示为P(x|y) = P(y|x)*P(x)/P(y)。也就是说,只要知道其中三个变量,我们就能求得第四个未知亮。

虽然看上去简单,又有点不切实际。但是朴素贝叶斯算法的实际表现却可以接受。这是一种解题思路的实践,将复杂问题抽象并简化。

本期,我们以垃圾邮件分类器为例。来看一下朴素贝叶斯在该场景下的表现。

  • 准备数据

  • 我们将收集的垃圾邮件存储在spam文件夹,有用邮件存储在ham文件夹。使用正则表达式来提取单词,构建训练数据。

  • 词袋模型

  • 由于邮件中的单词,及特征值为字符串。不利于基于数值运算的机器学习算法,我们需要换一种表示/编码方式。目前,最常用的方法为词向量,将邮件中出现的单词频次记录在向量中,该向量以词袋模型为基准。这里的词袋,收集了样本中的单词。

    构建词袋模型的代码如下:

    然后,我们用词向量的方法表示邮件内容

  • 训练模型

  • 我们使用scikit-learn中的贝叶斯算法模块来完成这个垃圾邮件识别任务。

  • 测试算法

  • 我们检查下该分类器在训练数据集下是否表现良好

    看来朴素贝叶斯算法虽然朴素,但是效果喜人。

  • 使用算法

  • 至此,我们有了一个简单的垃圾邮件识别器,来尝试一下吧。

    声明:本站部分文章内容及图片转载于互联 、内容不代表本站观点,如有内容涉及侵权,请您立即联系本站处理,非常感谢!

    (0)
    上一篇 2017年11月9日
    下一篇 2017年11月9日

    相关推荐