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算法的垃圾邮件分类系统相关推荐

  1. Python基于CRNN&CTPN的文本检测系统(源码&教程)

    1.背景 文本是人类最伟大和最具影响力的发明之一,是人类智慧的结晶,是人类文化.思想传承的一种基本的表达方式和不可或缺的载体.在21世纪,文本与日常生活密切相关.描述.理解万事万物,表达情感,与他人交 ...

  2. Python基于改进YOLOv5的烟叶病害检测系统(附带源码)

    Python基于改进YOLOv5的烟叶病害检测系统(附带源码) 1.背景 2.前言 3.烟叶数据集的采集 4.烟叶数据集的标注 5.烟叶检测训练&识别效果 6.病害数据集的采集 7.病害数据集 ...

  3. Python基于OpenCV的指针式表盘检测系统(附带源码&技术文档)

    1.背景 指针式机械表盘具有安装维护方便.结构简单.防电磁干扰等诸多优点, 目前广泛应用于工矿企业.能源及计量等部门.随着仪表数量的增加及精密仪表技术的发展,人工判读已经不能满足实际应用需求.随着计算 ...

  4. Python基于Opencv的鱼群密度速度检测系统(源码&教程)

    1.研究背景 智慧渔业是大数据.物联网与人工智能等现代信息技术驱动下的渔业发展新模式,是水产养殖业供给侧结构性改革的重要方式,涉及养殖环境监测.生物环境监测与生物状态监测这几大方面的应用与需求.本文从 ...

  5. 【Python】基于kNN算法的手写识别系统的实现与分类器测试

    基于kNN算法的手写识别系统 1.      数据准备 使用windows画图工具,手写0-9共10个数字,每个数字写20遍,共200个BMP文件. 方法如下,使用画图工具,打开网格线,调整像素为32 ...

  6. Python基于聚类算法实现密度聚类(DBSCAN)计算

    本文实例讲述了Python基于聚类算法实现密度聚类(DBSCAN)计算.分享给大家供大家参考,具体如下: 算法思想 基于密度的聚类算法从样本密度的角度考察样本之间的可连接性,并基于可连接样本不断扩展聚 ...

  7. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java基于推荐算法的餐厅点餐系统7czh9

    现在毕设刚开始.时间还有很多,可以从头开始学也可以.毕设其实不难,难的是我们懒散到这种时候再去静下心学.能自己独立完成尽量自己独立完成.相信你看过很多上面回答的,都不建议去某宝.毕竟这一行参差不齐哈. ...

  8. python 多分类情感词典_基于情感词典的文本情感分类

    基于情感词典的文本情感分类 传统的基于情感词典的文本情感分类,是对人的记忆和判断思维的最简单的模拟,如上图.我们首先通过学习来记忆一些基本词汇,如否定词语有"不",积极词语有&qu ...

  9. [附源码]计算机毕业设计Python基于微信小程序的网络办公系统(程序+源码+LW文档)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+N ...

  10. Python基于PyTorch实现BP神经网络ANN分类模型项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 在人工神经网络的发展历史上,感知机(Multilayer Per ...

最新文章

  1. 2022-2028年中国快捷酒店行业市场全景评估及前瞻分析报告
  2. 0基础JavaScript入门教程(一)认识代码
  3. python交并补_Python 集合的交差并补操作及方法
  4. Pytorch RNN(详解RNN+torch.nn.RNN()实现)
  5. 计算机房的分类,雅思词汇分类积累之计算机房
  6. sql server根据表中数据生成insert语句
  7. Part2--排序算法类模板
  8. MOSS 2010:Visual Studio 2010开发体验(23)——编写自定义的BCS连接器
  9. 2022计算机Java二级考试四十五套题真题【收藏版】(一周裸考计划)
  10. 菜鸟之路---1,熊猫烧香病毒的简单分析
  11. svn服务器端上传已有项目,「svn上传新项目」怎么添加新项目到SVN服务器...
  12. 为软件生成授权的唯一代码 CPUID+主板ID+内存ID
  13. 如何学习和使用asio 网络库
  14. java if 终止_java中跳出或终止if语句的方法
  15. oeasy教您玩转vim - 42 - # 剪切进入
  16. 还不了解外贸流程?这一篇就够了(小声bb)
  17. 硬盘坏了数据可以恢复吗?可以分两种情况恢复
  18. 使用XMLSerializer报错java.lang.NoClassDefFoundError: nu/xom/ParentNode
  19. 【转载】printf打印是字体和背景带颜色的输出的方法
  20. 锤子T1(Smartisan T1 4G)版刷成3G版,即sm705运行sm701的CM11 Android 4.4.4ROM

热门文章

  1. w ndows10输入法设置,Win10输入法设置技巧:切换输入法
  2. (20)雅思屠鸭第二十天:雅思听力part1中各种场景词的总结
  3. hosts文件位置在哪里_hosts文件怎么修复
  4. FATAL: Failed to start gitlab-runner: “systemctl“ failed: exit status 5, Failed to start gitlab-runn
  5. Bigemap支持百度地图
  6. messagebox 确认 取消
  7. qt+mysql开发提示driver not loaded driver not loaded
  8. Fantastic Blog CMS SQL注入漏洞(CVE-2022-28512)
  9. cpu亲和力总结taskset和setcpu及其他相关
  10. 传奇地图文件MapInfo参数大全