Python中怎么使用朴素贝叶斯进行垃圾短信识别

技术Python中怎么使用朴素贝叶斯进行垃圾短信识别这篇文章主要讲解了“Python中怎么使用朴素贝叶斯进行垃圾短信识别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Py

本文主要讲解“如何在Python中使用朴素贝叶斯识别垃圾邮件”。本文的解释简单明了,易学易懂。接下来,请跟随边肖的思路学习学习“如何用Python使用朴素贝叶斯识别垃圾邮件”!

00-1010现在很多手机管理软件都有拦截垃圾短信的功能,很智能很贴心,不是吗?

嗯~ o () o

对于经常被垃圾邮件骚扰的人非常有用。(••)

然而,在拦截垃圾邮件后,许多拦截软件.发送通知,提醒垃圾邮件已被拦截 (﹀_ ﹀) .

好奇心害死猫。你告诉我你截获了垃圾邮件。当然,我想知道你拦截了哪些垃圾邮件 (_)

00-1010机器学习根据其性质可以分为三类:

分类(监督)

退货(监督)

聚类(半监督)

垃圾短信通常使用已标记的短信数据来判断未知短信,属于机器学习中的分类性质。

Python中有很多机器学习模块,比如Sklearn、Tensorflow、Caffe等。这可以很容易地调用一些机器学习算法。

00-1010好吧,我们直接做吧.( ̄_,  ̄)

80w训练数据集和20w测试数据集都来自github上的一个小兄弟。我要感谢D====(;*)b。

00-1010好,我们先来看看数据是什么样子的:

importpandasaspd

data=PD . read _ CSV(r ' h : \ rubishmessage \ data \ 80w . txt ',编码='utf-8 ',sep=' ',header=None)

data.head()

Python中怎么使用朴素贝叶斯进行垃圾短信识别

最后一列是短信内容,倒数第二列是短信类型,0表示正常短信,1表示垃圾短信。

然后,我们根据不同的类型(普通短信和垃圾短信)对短信进行划分和分段:

#垃圾短信导入揭巴

垃圾邮件=数据[数据[1]==1]

垃圾邮件[2]=垃圾邮件[2]。map(lambda x: ' '。join(jieba.cut(x)))

spam.head()

#普通短信

正常=数据[数据[1]==0]

正常[2]=正常[2]。map(lambda x: ' '。join(jieba.cut(x)))

normal.head()

Python中怎么使用朴素贝叶斯进行垃圾短信识别

将不同类型的分段短信保存到不同的文件中:

spam.to_csv('soam.csv ',编码='utf-8 ',标头=False,索引=False,列=[2])

normal.to_csv('normal.csv ',编码='utf-8 ',标头=False,索引=False,列=[2])

一、引子

在这里,我们选择NLTK自然语言处理库进行贝叶斯分类,而不是Sklearn或其他深度学习库。

导入模块:

导入nltk . classifier . util

从nltk.classify导入天真分类器

从nltk .语料库导入PlaintextCorpusReaderimport随机

加载刚刚导出的短信文件:

加载短信语料库

message _ corps=PlainTextCorpsReader('。/',['soam.csv ',' normal.csv'])

all _ message=message _语料库. words()

定义特征函数以生成特征:

def manch _ feature(word,num_letter=1):

返回{ ' feature ' : word[-num _ letter :]}

短消息特征的标签提取;

labels _ name=([(message,'垃圾')formsseinmessage _ corpus . words(' Soam . CSV ')][(message,' normal ')formsseinmessage _ corpus . words(' normal . CSV ')])

随机种子(7)

random.shuffle(标签名)

并训练预测模型。

from nltk . class ifyimportaccurayasnlk _ accuracy

功能集=[(按摩_功能(n),按摩)适用于(n,按摩)标签_名称]

train_set,test _ set=featureset[2000:],featureset[:2000]

分类器=天真分类器. train(train_set)

最后,让我们看看预测有多准确:

打印('结果准确度:',STR (100 * NLTK _ accuracy(分类器,test _ set)) STR ('% ')

Python中怎么使用朴素贝叶斯进行垃圾短信识别

感谢阅读。以上就是“如何在Python中使用朴素贝叶斯识别垃圾邮件”的内容。学习完这篇文章,相信你对如何在Python中使用朴素贝叶斯识别垃圾邮件有了更深的理解,具体用法还需要实践验证。在这里,边肖将为您推送更多关于知识点的文章,敬请关注!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/123908.html

(0)

相关推荐

  • matplotlib如何设置坐标轴标签和间距

    技术matplotlib如何设置坐标轴标签和间距这篇文章给大家分享的是有关matplotlib如何设置坐标轴标签和间距的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。xlim、ylim我们首先来

    攻略 2021年10月31日
  • activity和singletask(task和activity有什么区别)

    技术Activity的singleTask有什么作用本篇内容主要讲解“Activity的singleTask有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Activ

    攻略 2021年12月18日
  • 如何解析Perl命令行程序用法

    技术如何解析Perl命令行程序用法如何解析Perl命令行程序用法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Perl命令行程序命令行程序下面的几个Pe

    攻略 2021年11月12日
  • excel中Alt键的使用技巧有哪些

    技术excel中Alt键的使用技巧有哪些这篇文章将为大家详细讲解有关excel中Alt键的使用技巧有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。  1.Alt+Enter 强制换

    攻略 2021年10月29日
  • ENVI 5.3软件安装教程,附带安装包获取方式)

    技术ENVI 5.3软件安装教程,附带安装包获取方式) ENVI 5.3软件安装教程(附带安装包获取方式)ENVI 5.3保姆级安装教程(附带安装包获取方式)
    ENVI(The Environment

    礼包 2021年11月7日
  • 如何解决JVM空闲堆内存不释放回OS的问题

    技术如何解决JVM空闲堆内存不释放回OS的问题今天就跟大家聊聊有关如何解决JVM空闲堆内存不释放回OS的问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。JDK

    攻略 2021年10月23日