州的先生

Python机器学习实战—使用朴素贝叶斯进行垃圾短信识别




一、引子

现在的很多手机管理软件都有垃圾短信拦截的功能,很智能很贴心是不是
嗯~ o( ̄▽ ̄)o
对于经常被垃圾短信骚扰的人来说,很是有用。(๑•̀ㅂ•́)و✧
但是很多的拦截软件在拦截到垃圾短信之后……又发个通知提示拦截到了垃圾短信╮(﹀_﹀)╭
好奇心害死猫,你告诉了我你拦截到了垃圾短信,我当然想知道你拦截的是什么垃圾短信了╮(╯_╰)╭

二、分类与垃圾短信识别

机器学习按性质来看,可以分为三大类:

  • 分类(监督)
  • 回归(监督)
  • 聚类(半监督)
    垃圾短信通常用已标记的短信数据,对未知的短信进行判断,其属于机器学习中的分类性质。
    在Python中有很多机器学习的模块,比如Sklearn、Tensorflow、Caffe等,可以很方便地调用一些机器学习的算法。

三、垃圾短信识别

嗯,直接上手干……( ̄_, ̄ )
80w训练数据集和20w测试数据集均来源于github上的一位小哥哥,在此谢过d=====( ̄▽ ̄*)b

1、数据处理

嗯,先看看数据长啥样:

最后一列为短信的内容,倒数第二列则是短信的类型,0表示正常短信,1表示垃圾短信。
然后,我们对短信内容按照不同的类型(正常短信和垃圾短信)进行分割和分词:

分别将不同类型分词后的短信保存为不同的文件:

2、模型选择和训练

在此我们没有选择Sklearn或是其他的深度学习库,而是选用NLTK自然语言处理库来进行贝叶斯分类。
导入模块:

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

定义一个特征函数,用于生成特征:

对短信特征进行标记提取:

训练并预测模型

最后,咱们看看预测的准确率怎么样:

在没有调整优化参数的情况下,有百分之八十几的准确率,还是不错的
━━( ̄ー ̄*|||━━
PS:
需要短信的训练数据和测试数据以及jupyter notebook文件的可以关注我的微信公众号:州的先生 回复关键字:垃圾短信识别

(百度云分享经常抽风被封,如果分享链接失效,欢迎反馈)


州的先生 Zmister.com 版权所有丨转载请邮件联系授权后注明转自:http://zmister.com/archives/127.html
点赞

发表评论

电子邮件地址不会被公开。