机器学习基础——带你实战朴素贝叶斯模型文本分类

本文介绍了朴素贝叶斯模型在文本分类中的应用,以垃圾邮件识别为例,详细阐述了文本预处理步骤,包括过滤标点符号、去除停用词和词性归一化。通过nltk库进行操作,最后展示了模型的预测效果,指出朴素贝叶斯模型在简单场景下仍有良好表现。
摘要由CSDN通过智能技术生成

本文始发于个人公众号:TechFlow


上一篇文章当中我们介绍了朴素贝叶斯模型的基本原理


朴素贝叶斯的核心本质是假设样本当中的变量服从某个分布,从而利用条件概率计算出样本属于某个类别的概率。一般来说一个样本往往会含有许多特征,这些特征之间很有可能是有相关性的。为了简化模型,朴素贝叶斯模型假设这些变量是独立的。这样我们就可以很简单地计算出样本的概率。


想要回顾其中细节的同学,可以点击链接回到之前的文章:

机器学习基础——让你一文学会朴素贝叶斯模型


在我们学习算法的过程中,如果只看模型的原理以及理论,总有一些纸上得来终觉浅的感觉。很多时候,道理说的头头是道,可是真正要上手的时候还是会一脸懵逼。或者是勉强能够搞一搞,但是过程当中总会遇到这样或者那样各种意想不到的问题。一方面是我们动手实践的不够, 另一方面也是理解不够深入。


今天这篇文章我们实际动手实现模型,并且在真实的数据集当中运行,再看看我们模型的运行效果。



朴素贝叶斯与文本分类


一般来说,我们认为狭义的事件的结果应该是有限的,也就是说事件的结果应该是一个离散值而不是连续值。所以早期的贝叶斯模型,在引入高斯混合模型的思想之前,针对的也是离散值的样本(存疑,笔者推测)。所以我们先抛开连续特征的场景,先来看看在离散样本当中,朴素贝叶斯模型有哪些实际应用。


在机器学习广泛的应用场景当中,有一个非常经典的应用场景,它的样本一定是离散的,它就是自然语言处理(Natural Language Processing)。在语言当中,无论是什么语言,无论是一个语句或是一段文本,它的最小单位要么是一个单词,要么是一个字。这些单元都是离散的,所以天生和朴素贝叶斯模型非常契合。


我们这次做的模型针对的场景是垃圾邮件的识别,这应该是我们生活当中经常接触到的功能。现在的邮箱基本上都有识别垃圾邮件的功能,如果发现是垃圾邮件,往往会直接屏蔽,不会展示给用户。早期的垃圾邮件和垃圾短信识别的功能都是通过朴素贝叶斯实现的。


在这个实验当中,我们用的是UCI的数据集。UCI大学的机器学习数据集非常出名,许多教材和课本上都使用了他们的数据集来作为例子。我们可以直接通过网页下载他们的数据,UCI的数据集里的数据都是免费的。


垃圾邮件识别


下载完成之后,我们先挑选其中几条来看看:


ham Go until jurong point, crazy… Available only in bugis n great world la e buffet… Cine there got amore wat…

ham Ok lar… Joking wif u oni…

spam Free entry in 2 a wkly comp to win FA Cup final tkts 21st May 2005. Text FA to 87121 to receive entry question(std txt rate)T&C’s apply 08452810075over18’s

ham U dun say so early hor… U c already then say…


这份数据是以txt文件类型保存,每行文本的第一个单词表示文本的类别,其中ham表示正常,spam表示是垃圾邮件。


我们首先读取文件,将文件当中的内容先读取到list当中,方便我们后续的处理。


def read_file(filename):
    file
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值