朴素贝叶斯,英文名称为Native Bayes,是一种基于概率论的机器学习算法。命名为朴素,是因为它基于一个很纯粹,很淳朴的假设。首先,它假设每个事件(特征)是独立互不影响的;其次,它假设每个事件(特征)同等重要。用数学公式表示为P(x|y) = P(y|x)*P(x)/P(y)。也就是说,只要知道其中三个变量,我们就能求得第四个未知亮。
虽然看上去简单,又有点不切实际。但是朴素贝叶斯算法的实际表现却可以接受。这是一种解题思路的实践,将复杂问题抽象并简化。
本期,我们以垃圾邮件分类器为例。来看一下朴素贝叶斯在该场景下的表现。
准备数据
我们将收集的垃圾邮件存储在spam文件夹,有用邮件存储在ham文件夹。使用正则表达式来提取单词,构建训练数据。
词袋模型
由于邮件中的单词,及特征值为字符串。不利于基于数值运算的机器学习算法,我们需要换一种表示/编码方式。目前,最常用的方法为词向量,将邮件中出现的单词频次记录在向量中,该向量以词袋模型为基准。这里的词袋,收集了样本中的单词。
构建词袋模型的代码如下:
然后,我们用词向量的方法表示邮件内容
训练模型
我们使用scikit-learn中的贝叶斯算法模块来完成这个垃圾邮件识别任务。
测试算法
我们检查下该分类器在训练数据集下是否表现良好
看来朴素贝叶斯算法虽然朴素,但是效果喜人。
使用算法
至此,我们有了一个简单的垃圾邮件识别器,来尝试一下吧。
声明:本站部分文章内容及图片转载于互联 、内容不代表本站观点,如有内容涉及侵权,请您立即联系本站处理,非常感谢!