Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > 大数据云计算 >

基于Spark垃圾邮件分类 PDF 下载


分享到:
时间:2021-11-28 09:37来源:http://www.java1234.com 作者:转载  侵权举报
基于Spark垃圾邮件分类 PDF 下载
失效链接处理
基于Spark垃圾邮件分类  PDF 下载


本站整理下载:
提取码:v4tt 
 
 
相关截图:
 
主要内容:

一、项目简介
1.内容简介
在生活中,我们经常会遇到一些分类问题,例如买西瓜,根据一些条件判断买的是好瓜还是坏瓜,比如说拍瓜、以及看瓜的纹路。还有就是在生活中手机经常会收到一些短信,这些短信到底是正常的短信还是一些广告推销短信。
我想大家都使用过QQ邮箱吧。细心的同学都会发现里面有一个垃圾箱的地方,这里就是专门存放垃圾邮件的地方。首先后台会事先判断一封邮件是否是正常邮件还是垃圾邮件。如果是正常邮件,那么就正常显示在收件箱,如果判断为垃圾邮件就放在垃圾箱中,但是他也可能分错,所有在垃圾邮件中也有个选项这不是垃圾邮件的功能,那么下次就会正常显示了。其实这就是一个监督学习的例子。简单的说就是从已知到未知。通过大量的一直数据来对未知数据的一个预测、评判。
接下来我们就简单的通过Spark来进行垃圾邮件的识别操作。
2.涉及到的内容
a.Bayes的推导过程
b.Scala基础编程
c.文本表示TF-IDF
d.RDD的基本操作。Transformation和Actions
e.SparkMlib的Bayes的算法应用
3.实验环境
Ubuntu14.04
Spark1.6.1
4.准备工作
该项目难度一般,属于中等偏下难度,该项目适合有一定的Spark基础。
数据准备:网上下载的邮件数据,包括正常数据和垃圾邮件数据。一共差不多一万个邮件数据。里面的全是英文文本的邮件数据。
二、实现原理
通过将文本数据转换成数字向量数据,这里使用的是TF-IDF来转换,然后将数据添加上标签,返回一个LabeledPoint类型的数据,然后使用Bayes进行模型的建立。
下面就是该项目的流程图:
 
 
 
 
 
 
 
 
 
 
 
 
 
当然这只是个简单的项目,在这里我们只是想邮件数据进行拆成单个的单词来转换成词向量,感兴趣的同学也可以研究一下NLP,比如说斯坦福的分词器,将邮件数据进行分词来转换成词向量,也许能够得到更好的提升,这些都是数据预处理的过程。熟话说,数据预处理的结果是直接决定一个模型好坏的高度的,而算法的选择和调优只是在无限的接近这个高度。
朴素贝叶斯(来自百度百科)
朴素:在理想状态下的各个条件相互独立
Bayes算法:是统计学中的分类算法。它是一种根据概率统计的知识来进行分类的算法。是基于条件概率来计算的。这属于监督学习,
表现形式:P(B[i]|A)=P(B[i])*P(A│B[i])/{P(B[1])*P(A│B[1]) +P(B[2])*P(A│B[2])+…+P(B[n])*P(A│B[n])}
推导过程:P(B|A)是一直A发生的概率的情况下B发生的概率
P(B|A) = P(A∩B) /P(B)
P(A|B) = P(A∩B) / P(A)
 
P(B|A)* P(B) = P(A|B)* P(A)
 
P(A|B) = P(B|A)* P(B) / P(A)
 
TF-IDF(来自百度百科)
TF-IDF是一种用于信息检索与数据挖掘的常用加权技术。TF意思是词频,IDF意思是逆向文件频率。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。TFIDF实际上是:TF * IDF,TF词频,IDF逆向文件频率。TF表示词条在文档d中出现的频率。IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t具有很好的类别区分能力。如果某一类文档C中包含词条t的文档数为m,而其它类包含t的文档总数为k,显然所有包含t的文档数n=m+k,当m大的时候,n也大,按照IDF公式得到的IDF的值会小,就说明该词条t类别区分能力不强。但是实际上,如果一个词条在一个类的文档中频繁出现,则说明该词条能够很好代表这个类的文本的特征,这样的词条应该给它们赋予较高的权重,并选来作为该类文本的特征词以区别与其它类文档。这就是IDF的不足之处. 在一份给定的文件里,词频(TF)指的是某一个给定的词语在该文件中出现的频率。
举例
假如一篇文件的总词语数是100个,而词语“母牛”出现了3次,那么“母牛”一词在该文件中的词频就是3/100=0.03。一个计算文件频率 (IDF) 的方法是文件集里包含的文件总数除以测定有多少份文件出现过“母牛”一词。所以,如果“母牛”一词在1,000份文件出现过,而文件总数是10,000,000份的话,其逆向文件频率就是 lg10,000,000 / 1,000)=4。最后的TF-IDF的分数为0.03 * 4=0.12。


 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐