垃圾邮件和贝叶斯过滤算法

java通过贝叶斯算法实现垃圾邮件过滤详解 本文是“java开发邮箱系统”系列文章之一,通过阅读本系列的文章,你可以通过Java实现一个邮件服务器。       贝叶斯算法是常用的垃圾邮件过滤算法,理论依据主要是概率统计中的一些基本理论。因为这些都可以很方便的在网上查到,所以本文只讲实践,不讲数学知识。步骤如下: 准备400封正常邮件、400封垃圾邮件。(垃圾邮件的收集可以通过架设一台开放的邮件服务器来实现,比较麻烦的是正常邮... 阅读详情

贝叶斯算法介绍
一. 贝叶斯过滤算法的基本步骤

1) 收集大量的垃圾邮件和非垃圾邮件,建立垃圾邮件集和非垃圾邮件集。
2) 提取邮件主题和邮件体中的独立字串例如 ABC32,¥234等作为TOKEN串并统计提取出的TOKEN串出现的次数即字频。按照上述的方法分别处理垃圾邮件集和非垃圾邮件集中的所有邮件。
3) 每一个邮件集对应一个哈希表,hashtable_good对应非垃圾邮件集而hashtable_bad对应垃圾邮件集。表中存储TOKEN串到字频的映射关系。
4) 计算每个哈希表中TOKEN串出现的概率P=(某TOKEN串的字频)/(对应哈希表的长度)
5) 综合考虑hashtable_good和hashtable_bad,推断出当新来的邮件中出现某个TOKEN串时,该新邮件为垃圾邮件的概率。数学表达式为:
A事件----邮件为垃圾邮件;
t1,t2 …….tn代表TOKEN串
则P(A|ti)表示在邮件中出现TOKEN串ti时,该邮件为垃圾邮件的概率。
设
P1(ti)=(ti在hashtable_good中的值)
P2(ti)=(ti在hashtable_ bad中的值)
则 P(A|ti)= P1(ti)/[(P1(ti)+ P2(ti)];
6) 建立新的哈希表 hashtable_probability存储TOKEN串ti到P(A|ti)的映射
7) 至此,垃圾邮件集和非垃圾邮件集的学习过程结束。根据建立的哈希表 hashtable_probability可以估计一封新到的邮件为垃圾邮件的可能性。
当新到一封邮件时,按照步骤2)生成TOKEN串。查询hashtable_probability得到该TOKEN 串的键值。
假设由该邮件共得到N个TOKEN串,t1,t2…….tn, hashtable_probability中对应的值为P1,P2,。。。。。。PN,
P(A|t1 ,t2, t3……tn)表示在邮件中同时出现多个TOKEN串t1,t2…….tn时,该邮件为垃圾邮件的概率。
由复合概率公式可得
P(A|t1 ,t2, t3……tn)=(P1*P2*。。。。PN)/[P1*P2*。。。。。PN+(1-P1)*(1-P2)*。。。(1-PN)]
当P(A|t1 ,t2, t3……tn)超过预定阈值时,就可以判断邮件为垃圾邮件。

二. 贝叶斯过滤算法举例

例如:一封含有“fa#gong”字样的垃圾邮件 A
和 一封含有“法律”字样的非垃圾邮件B
根据邮件A生成hashtable_ bad,该哈希表中的记录为
法:1次
#:1次
功:1次
计算得在本表中:
法出现的概率为0。3
#出现的概率为0。3
功出现的概率为0。3
根据邮件B生成hashtable_good,该哈希表中的记录为:
法:1
律:1
计算得在本表中:
法出现的概率为0。5
律出现的概率为0。5
综合考虑两个哈希表,共有四个TOKEN串: 法 # 功 律
当邮件中出现“法”时,该邮件为垃圾邮件的概率为:
P=0。3/(0。3+0。5)=0。375
出现“#”时:
P=0。3/(0。3+0)=1
出现“功“时:
P=0。3/(0。3+0)=1
出现“律”时
P=0/(0+0。5)=0;
由此可得第三个哈希表:hashtable_probability 其数据为:
法:0。375
#:1
功:1
律:0

当新到一封含有“功律”的邮件时,我们可得到两个TOKEN串,功 律
查询哈希表hashtable_probability可得
P(垃圾邮件| 功)=1
P (垃圾邮件|律)=0
此时该邮件为垃圾邮件的可能性为:
P=(0*1)/[0*1+(1-0)*(1-1)]=0
由此可推出该邮件为非垃圾邮件

朴素贝叶斯算法实现垃圾邮件过滤 wordList = textParse(open('email/spam/%d.txt' % i, 'r').read()) # 读取每个垃圾邮件,并字符串转换成字符串列表。wordList = textParse(open('email/ham/%d.txt' % i, 'r').read()) # 读取每个非垃圾邮件,并字符串转换成字符串列表。if trainCategory[i] == 1: # 统计属于侮辱类的条件概率所需的数据,即P(w0|1),P(w1|1),P(w2|1)··· 阅读详情

相关推荐

朴素贝叶斯算法过滤垃圾邮件

基础知识 条件概率 在A发生的条件下B发生的概率记为P(B|A), P(B|A)=P(AB)P(A)P(B|A)=\frac{P(AB)}{P(A)} 全概率公式 若B1,B2...BnB_{1},B_{2}...B_{n}为样本空间E的一个划分,则 P(A)=P(A|B1)P(B1)+P(A|B2)P(B2)+...+P(A|Bn)P(Bn)=∑i=1nP(A|Bi)P(Bi)P(A) =

penghui_tan的博客 1271

机器学习-朴素贝叶斯过滤垃圾邮件

什么是朴素贝叶斯算法:用贝叶斯定理来预测一个未知类别的样本属于各个类别的可能性,选择可能性最大的一个类别作为该样本的最终类别。用这个算法处理垃圾邮件就可以理解为:用贝叶斯定理来预测一封由若干个单词组成的不知道是否为垃圾邮件的邮件,它是垃圾邮件或是正常邮件的可能性,如果算法预测出垃圾邮件的可能性更高,那这封邮件就是垃圾邮件,反之为正常邮件。

weixin_55747326的博客 6459

机器学习笔记(2)——使用朴素贝叶斯算法过滤(中英文)垃圾邮件

在上一篇文章《使用朴素贝叶斯算法对文档分类详解》中,我们实现了用朴素贝叶斯算法对简单文档的分类,今天我们将利用此分类器来过滤垃圾邮件。 1. 准备数据——文本切分 之前算法中输入的文档格式为单词向量,例如['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'],而实际情况中通常要处理的是文本(例如邮件),那么就要先将文本转换为词向量,...

小赵的博客 1万+

【机器学习】贝叶斯算法详解 + 公式推导 + 垃圾邮件过滤实战 + Python代码实现

贝叶斯定理由英国数学家贝叶斯 ( Thomas Bayes 1702-1761 ) 发展,用来描述两个条件概率之间的关系,比如 P(A|B) 和 P(B|A)。按照乘法法则,可以立刻导出:P(A∩B) = P(A)*P(B|A)=P(B)*P(A|B)。如上公式也可变形为:P(A|B)=P(B|A)*P(A)/P(B)。

知不足而奋进,望远山而前行 3万+

贝叶斯算法:垃圾邮件过滤

准备 100封邮件,50封垃圾邮件和50封正常邮件参考 : 贝叶斯算法原理 程序过程解释 垃圾邮件分类的数学基础是贝叶斯推断(bayesian inference)。整个程序过程主要有以下几个部分构成: step 1 : 提取邮件并处理 1、使用 TDirectory.GetFiles(xPath) 获得 xPath 指示的文件夹下的所有文件的路径。 2、用 TStringList 根据路径读取文件内容。 3、使用 Split 方法将TStringList读取的内容以空格和“#13”分割...

daiswy的博客 4112

15贝叶斯算法(输入纠正、垃圾邮件过滤、贝叶斯拼写检查器含数据)

唐宇迪《python数据分析与机器学习实战》学习笔记 15贝叶斯算法 ** 1.算法推导 ** 转换为分母传裤子的比例,分子女生穿裤子的比例 B情况下A发生的概率 = A情况下B发生的概率*A的概率/B的概率 ** 2.举例一:输入纠正 ** ** 3.举例二:垃圾邮件过滤问题 ** 原始贝叶斯问题转换为朴素贝叶斯问题,假设特征独立 ** 4.贝叶斯拼写检查器 **...

qq_45425321的博客 467

朴素贝叶斯算法--垃圾邮件过滤

一、朴素贝叶斯概述 1、贝叶斯决策理论 假设现在我们有一个数据集,它由两类数据组成,我们现在用P1表示数据点属于类别1的概率,用P2表示数据点属于类别2的概率,那么对于一个新数据点X,可以用下面的规则来判断它的类别: □如果P1(X)>P2(X), 那么类别为1。 □如果P1(X)<P2(X), 那么类别为2。 也就是说,我们会选择高概率对应的类别。这就是贝叶斯决策理论的核心思想,即选...

weixin_45422335的博客 5429

贝叶斯算法在JavaMail中的垃圾邮件过滤应用项目

贝叶斯算法是基于贝叶斯定理的统计学方法,它提供了一种在已知某些条件下对未知概率进行估计的方法。它广泛应用于垃圾邮件过滤、疾病诊断、推荐系统等众多领域。其核心思想是利用先验概率和条件概率,更新事物发生的后验概率。JavaMail API是一个标准的扩展API,允许开发者在Java程序中实现邮件的发送和接收功能。由于其具备高度的可扩展性和与邮件服务器的兼容性,JavaMail成为了企业级邮件处理应用中的首选。

weixin_35871529的博客 478

最全面的贝叶斯过滤技术

贝叶斯过滤技术www.pineapp.cn 咨询邮箱:service@thinkits.cn        贝叶斯被誉为最有效的反垃圾邮件技术,有效过滤率达到98%,网络上有些这样的资料,但不是比较晦涩就是语焉不详,故本文希望能比较通俗,同时也更全面介绍此项技术。       [1]-为引用资料一 概述 Thomas Bayes(1702-1763), 托马斯·贝叶斯是

f198311的专栏 1421

朴素贝叶斯算法:垃圾邮件过滤器的构建与实现

本文探讨了朴素贝叶斯算法在垃圾邮件过滤中的应用。通过假设单词的独立性,算法可以简单地通过乘法计算消息为垃圾邮件的概率。文章提供了实现朴素贝叶斯分类器的步骤,并通过实例验证了其有效性。

weixin_35459464的博客 491

如何利用CN3791实现太阳能电池板对锂电池的高效充电管理

本文详细介绍了如何利用CN3791芯片实现太阳能电池板对锂电池的高效充电管理。CN3791集成了MPPT(最大功率点跟踪)功能,能智能调节太阳能板的输出,确保在不同光照条件下获得最大功率。文章涵盖芯片工作原理、外围电路设计、充电全过程管理及实际应用经验,帮助开发者优化太阳能充电系统效率。

weixin_33709219的博客 499

机器学习——朴素贝叶斯算法(垃圾邮件分类)

垃圾邮件分类

qq_53866837的博客 4510

STM32裸机开发基础:寄存器直接操作详解

寄存器是微控制器内部的特殊存储单元,直接与硬件电路连接,用于控制和监视硬件功能。与普通内存不同,寄存器的每一位(bit)通常都有特定的硬件含义。寄存器就是机器的控制面板上的各种开关和指示灯每个开关控制一个具体功能(如打开LED、启动通信)每个指示灯显示一个具体状态(如数据接收完成、错误发生)// GPIO引脚定义1。

2401_88760782的博客 2186

python:基于朴素贝叶斯算法的垃圾邮件过滤分类

朴素贝叶斯法(Naive Bayes model)是基于贝叶斯定理与特征条件独立假设的分类方法。朴素贝叶斯算法(Naive Bayesian algorithm) 是应用最为广泛的分类算法之一。最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Bayesian Model,NBM)。和决策树模型相比,朴素贝叶斯分类器(Naive Bayes Classifier 或 NBC)发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。

spiritqi的博客 6256

ADB命令解锁Android手机屏幕的3种实用方法(附详细步骤)

本文详细介绍了在Android手机屏幕失灵或密码遗忘时,利用ADB命令解锁屏幕的三种实用方法。包括通过ADB模拟输入事件、移除锁屏认证文件(需Root权限)以及结合恢复模式抢救数据。文章提供了详细的操作步骤与风险提示,强调提前开启USB调试的重要性,是Android用户应对紧急锁屏情况的有效技术指南。

weixin_29229055的博客 917

DP83848以太网PHY芯片:自动协商与MII/RMII接口实战解析

以太网物理层(PHY)芯片是嵌入式网络通信的核心,负责数字信号与模拟信号的转换,其稳定性和兼容性直接影响系统性能。其工作原理基于IEEE标准,通过管理接口(MDC/MDIO)配置内部寄存器,实现链路速率、双工模式等关键参数的设定。这项技术的核心价值在于为工业控制、汽车电子等严苛环境提供可靠、自适应的网络连接。在实际应用中,PHY芯片通过自动协商(Auto-Negotiation)功能与对端设备智能匹配最佳通信模式,极大提升了产品的易用性。同时,其支持的MII与RMII接口为硬件设计提供了灵活性,前者是标准并

weixin_29189987的博客 372

使用朴素贝叶斯算法过滤垃圾邮件

使用朴素贝叶斯算法过滤垃圾邮件。

AIGC 1万+

揭秘无人机前沿领域的科技新突破

本文旨在系统性地介绍无人机技术在前沿领域的最新突破,涵盖从基础理论到实际应用的各个方面。我们将重点关注那些正在改变无人机行业面貌的关键技术创新,并分析它们对未来发展的影响。文章首先介绍无人机技术的基础概念和背景,然后深入探讨六个关键领域的技术突破,接着分析实际应用案例,最后展望未来发展趋势。自主导航系统(SLAM):同时定位与地图构建技术,使无人机能在未知环境中自主导航计算机视觉(CV):使无人机能够"看"和理解周围环境的技术5G通信:第五代移动通信技术,提供高速、低延迟的数据传输能源管理。

AI天才研究院 1489

【毕业设计】:️基于贝叶斯的垃圾邮件过滤算法的设计与实现

在这个信息爆炸的时代,电子邮件已成为我们日常生活和工作中不可或缺的一部分。然而,垃圾邮件的泛滥给用户带来了极大的困扰。为了解决这一问题,本文提出了一种基于贝叶斯定理的垃圾邮件过滤算法。该算法通过学习邮件中的词汇分布来区分垃圾邮件和正常邮件。我们将详细阐述算法的设计原理、实现步骤以及测试结果。

辅导大学生代码设计15年 1108

最小可分辨对比度(MRC)

最小可分辨对比度的测试方法如下: 1)选择对比度测试靶板,一般有100%,50%,33.77%,15%,5%。 2)调整照度,确保能够清晰观测到图像中的靶标; 3)利用USAF1951分辨率靶观察找到能够分辨出的靶标。 1951 USAF分辨力测试图目前仍广泛地应用于测试光学成像系统(如显微镜和相机)的分辨能力。这种图案包括几组由三条短线构成组合,短线的尺寸从大到小。成像系统无法辩明的...

6271

WEB浏览器视频流播放方案

基于Media Source Extensions播放视频流 浏览器播放视频的几种方法 一、H5 video标签 在浏览器播放视频,可以使用HTML5原生的video标签。但其播放的格式使用一定限制的,目前video只支持三种格式WebM、Ogg、MP4。 WebM:WebM 文件使用 VP8 视频编解码器和 Vorbis 音频编解码器 Ogg :Ogg 文件使用 Theora 视频编解码器和 Vorbis音频编解码器 MP4: MPEG 4文件使用 H264 视频编解码器和AAC音频编解码器 上面三种

machh的专栏 2380

使用朴素贝叶斯算法过滤(中英文)垃圾邮件

使用朴素贝叶斯解决一些现实生活的问题时,需要先从文本内容得到字符串列表,然后生成词向量。下面这个例子中,我们将了解朴素贝叶斯的一个最著名的应用:电子邮件垃圾过滤。 首先看一下使用朴素贝叶斯对电子邮件进行分类的步骤: 收集数据:提供文本文件。 准备数据:将文本文件解析成词条向量。 分析数据:检查词条确保解析的正确性。 训练算法:使用我们之前建立的trainNB0()函数。 测试算...

qq_34205793的博客 3756

Python爬虫实战:公共资源交易平台招标数据采集实战 - 从零构建企业情报系统(附CSV导出 + SQLite持久化存储)!

我长期专注 Python 爬虫工程化实战,主理专栏 👉 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 1286

机器学习:朴素贝叶斯算法与垃圾邮件过滤

贝叶斯算法是由英国数学家托马斯·贝叶斯提出的,这个算法的提出是为了解决“逆向概率”的问题。正向概率:假设一个箱子里有5个黄色球和5个白色球,随机从箱子里拿出一个球,请问取出的是黄球的概率是多少?很容易计算P(黄球)= N(黄球)/N(黄球)+ N(白球) = 5/5+5 = 1/2。逆向概率:起初我们并不知道箱子里有多少个球,我们依次从箱子里取出10个球,发现这个10个球中有7个白球,3个黄球,那么我们会根据我们观察到的结果去推测箱子里白球与黄球的分布比例大概是7:3,但是我们无法推测出箱子里的球的个数。

weixin_51998499的博客 5027

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

朴素贝叶斯算法在垃圾邮件过滤中的应用

由于最近在写一篇关于大数据分类的论文(吐槽一下:导师天天催),所以在图书馆借了几本有关大数据的书籍。今天看《New Internet 大数据挖掘》(感兴趣的可以看一下)中提到垃圾邮件过滤,让我联想到昨天在1280社区看到一道名企面试题,“在游戏实时交流中,怎么过滤那些广告?”。当时想到的是关键词过滤,也没细想。 其实垃圾邮件过滤跟广告过滤是一种,使用最多的是朴素贝叶斯算法。 贝叶斯定理是关

tenderhearted的专栏 2540

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: C++Builder存取Excel文件
下一篇: 如何使用FileCreate建立一个文件
marklr
博客等级 码龄19年 52粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值