垃圾邮件分类系统python_【Python】基于Bayes算法的垃圾邮件分类系统
1. 实验要求:
对垃圾邮件分类算法(书上P66)改进:
1、采用词袋模型
2、随机选择15个测试样本
3、去除长度小于3的字符
2. 垃圾邮件分类算法改进点
defbagOfWords2VecMN(vocabList, inputSet):
returnVec = [0]*len(vocabList)
for word in inputSet:
if word in vocabList:
returnVec[vocabList.index(word)] += 1
return returnVec
deftextParse(bigString): #input is bigstring, #output is word list
import re
listOfTokens = re.split(r'\W*', bigString)
return [tok.lower() for tok in listOfTokensif len(tok) > 3]
def spamTest():
docList=[]; classList = []; fullText =[]
for i in range(1,26):
wordList =textParse(open('email/spam/%d.txt' % i).read())
docList.append(wordList)
fullText.extend(wordList)
classList.append(1)
wordList =textParse(open('email/ham/%d.txt' % i).read())
docList.append(wordList)
fullText.extend(wordList)
classList.append(0)
vocabList = createVocabList(docList)#createvocabulary
trainingSet = range(50); testSet=[] #create test set
for i in range(15):
randIndex =int(random.uniform(0,len(trainingSet)))
testSet.append(trainingSet[randIndex])
del(trainingSet[randIndex])
trainMat=[]; trainClasses = []
for docIndex in trainingSet:#train theclassifier (get probs) trainNB0
trainMat.append(bagOfWords2VecMN(vocabList,docList[docIndex]))
trainClasses.append(classList[docIndex])
p0V,p1V,pSpam =trainNB0(array(trainMat),array(trainClasses))
errorCount = 0
for docIndex in testSet: #classify the remaining items
wordVector =bagOfWords2VecMN(vocabList, docList[docIndex])
ifclassifyNB(array(wordVector),p0V,p1V,pSpam) != classList[docIndex]:
errorCount += 1
print "classificationerror",docList[docIndex]
print 'the error rate is:',float(errorCount)/len(testSet)
#return vocabList,fullText
3. 改进点说明
上述代码中将改进点高亮标注。
词袋模型算法说明
文档词袋模型是词集模型的改进算法。
词集模型仅仅将每个词出现与否作为一个特征;词袋模型考虑到如果一个词出现多次,其中包含的信息。
bagOfWords2VecMN函数中,针对属于inputSet的word没出现一次进行计数,函数返回计数值。
4. 测试分类器
>>>import os
>>>os.getcwd()
'C:\\Python27\\MLIA\\Ch04'
>>>import bayes
>>>bayes.spamTest()
classificationerror ['adobe', 'microsoft', 'softwares', 'fast', 'order', 'download','microsoft', 'office', 'professional', 'plus', '2007', '2010', 'microsoft','windows', 'ultimate', 'adobe', 'photoshop', 'extended', 'adobe', 'acrobat','extended', 'windows', 'professional', 'thousand', 'more', 'titles']
the error rateis: 0.0666666666667
>>>bayes.spamTest()
classificationerror ['yeah', 'ready', 'here', 'because', 'plane', 'tickets', 'germany']
classificationerror ['benoit', 'mandelbrot', '1924', '2010', 'benoit', 'mandelbrot', '1924','2010', 'wilmott', 'team', 'benoit', 'mandelbrot', 'mathematician', 'father','fractal', 'mathematics', 'advocate', 'more', 'sophisticated', 'modelling','quantitative', 'finance', 'died', '14th', 'october', '2010', 'aged','wilmott', 'magazine', 'often', 'featured', 'mandelbrot', 'ideas', 'work','others', 'inspired', 'fundamental', 'insights', 'must', 'logged', 'view','these', 'articles', 'from', 'past', 'issues', 'wilmott', 'magazine']
the error rateis: 0.133333333333
垃圾邮件分类系统python_【Python】基于Bayes算法的垃圾邮件分类系统相关推荐
- Python基于CRNN&CTPN的文本检测系统(源码&教程)
1.背景 文本是人类最伟大和最具影响力的发明之一,是人类智慧的结晶,是人类文化.思想传承的一种基本的表达方式和不可或缺的载体.在21世纪,文本与日常生活密切相关.描述.理解万事万物,表达情感,与他人交 ...
- Python基于改进YOLOv5的烟叶病害检测系统(附带源码)
Python基于改进YOLOv5的烟叶病害检测系统(附带源码) 1.背景 2.前言 3.烟叶数据集的采集 4.烟叶数据集的标注 5.烟叶检测训练&识别效果 6.病害数据集的采集 7.病害数据集 ...
- Python基于OpenCV的指针式表盘检测系统(附带源码&技术文档)
1.背景 指针式机械表盘具有安装维护方便.结构简单.防电磁干扰等诸多优点, 目前广泛应用于工矿企业.能源及计量等部门.随着仪表数量的增加及精密仪表技术的发展,人工判读已经不能满足实际应用需求.随着计算 ...
- Python基于Opencv的鱼群密度速度检测系统(源码&教程)
1.研究背景 智慧渔业是大数据.物联网与人工智能等现代信息技术驱动下的渔业发展新模式,是水产养殖业供给侧结构性改革的重要方式,涉及养殖环境监测.生物环境监测与生物状态监测这几大方面的应用与需求.本文从 ...
- 【Python】基于kNN算法的手写识别系统的实现与分类器测试
基于kNN算法的手写识别系统 1. 数据准备 使用windows画图工具,手写0-9共10个数字,每个数字写20遍,共200个BMP文件. 方法如下,使用画图工具,打开网格线,调整像素为32 ...
- Python基于聚类算法实现密度聚类(DBSCAN)计算
本文实例讲述了Python基于聚类算法实现密度聚类(DBSCAN)计算.分享给大家供大家参考,具体如下: 算法思想 基于密度的聚类算法从样本密度的角度考察样本之间的可连接性,并基于可连接样本不断扩展聚 ...
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java基于推荐算法的餐厅点餐系统7czh9
现在毕设刚开始.时间还有很多,可以从头开始学也可以.毕设其实不难,难的是我们懒散到这种时候再去静下心学.能自己独立完成尽量自己独立完成.相信你看过很多上面回答的,都不建议去某宝.毕竟这一行参差不齐哈. ...
- python 多分类情感词典_基于情感词典的文本情感分类
基于情感词典的文本情感分类 传统的基于情感词典的文本情感分类,是对人的记忆和判断思维的最简单的模拟,如上图.我们首先通过学习来记忆一些基本词汇,如否定词语有"不",积极词语有&qu ...
- [附源码]计算机毕业设计Python基于微信小程序的网络办公系统(程序+源码+LW文档)
该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+N ...
- Python基于PyTorch实现BP神经网络ANN分类模型项目实战
说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 在人工神经网络的发展历史上,感知机(Multilayer Per ...
最新文章
- 2022-2028年中国快捷酒店行业市场全景评估及前瞻分析报告
- 0基础JavaScript入门教程(一)认识代码
- python交并补_Python 集合的交差并补操作及方法
- Pytorch RNN(详解RNN+torch.nn.RNN()实现)
- 计算机房的分类,雅思词汇分类积累之计算机房
- sql server根据表中数据生成insert语句
- Part2--排序算法类模板
- MOSS 2010:Visual Studio 2010开发体验(23)——编写自定义的BCS连接器
- 2022计算机Java二级考试四十五套题真题【收藏版】(一周裸考计划)
- 菜鸟之路---1,熊猫烧香病毒的简单分析
- svn服务器端上传已有项目,「svn上传新项目」怎么添加新项目到SVN服务器...
- 为软件生成授权的唯一代码 CPUID+主板ID+内存ID
- 如何学习和使用asio 网络库
- java if 终止_java中跳出或终止if语句的方法
- oeasy教您玩转vim - 42 - # 剪切进入
- 还不了解外贸流程?这一篇就够了(小声bb)
- 硬盘坏了数据可以恢复吗?可以分两种情况恢复
- 使用XMLSerializer报错java.lang.NoClassDefFoundError: nu/xom/ParentNode
- 【转载】printf打印是字体和背景带颜色的输出的方法
- 锤子T1(Smartisan T1 4G)版刷成3G版,即sm705运行sm701的CM11 Android 4.4.4ROM
热门文章
- w ndows10输入法设置,Win10输入法设置技巧:切换输入法
- (20)雅思屠鸭第二十天:雅思听力part1中各种场景词的总结
- hosts文件位置在哪里_hosts文件怎么修复
- FATAL: Failed to start gitlab-runner: “systemctl“ failed: exit status 5, Failed to start gitlab-runn
- Bigemap支持百度地图
- messagebox 确认 取消
- qt+mysql开发提示driver not loaded driver not loaded
- Fantastic Blog CMS SQL注入漏洞(CVE-2022-28512)
- cpu亲和力总结taskset和setcpu及其他相关
- 传奇地图文件MapInfo参数大全