-
大小: 56KB文件类型: .rar金币: 1下载: 0 次发布日期: 2021-06-02
- 语言: 其他
- 标签: python bayes classificati
资源简介
简单的邮件分类,使用bayes分类器,100行正常邮件和100行垃圾邮件。
代码片段和文件信息
from numpy import *
def textParse(bigString):
import re
listOfTokens = re.split(r‘\W*‘ bigString)
return [tok for tok in listOfTokens if len(tok) > 2]
def createVocabList(dataSet):
vocabSet = set([])
for docment in dataSet:
vocabSet = vocabSet | set(docment)
return list(vocabSet)
def bagOfWord2Vec(vocabListinputSet):
returnVec = [0]*len(vocabList)
for word in inputSet:
if word in vocabList:
returnVec[vocabList.index(word)] += 1
return returnVec
def trainNB(trainMattrainGategory):##trainMat为所有邮件的矩阵表示,trainCategory为表示邮件类别的向量
numTrain = len(trainMat) #邮件总数量
numWords = len(trainMat[0]) #词典长度
pAbusive = sum(trainGategory)/float(numTrain) #统计垃圾邮件的总个数,然后除以总文档个数(先验概率)
p0Num = ones(numWords) #将向量初始化为1,表示每个词至少出现1次
p1Num = ones(numWords)
p0Denom = 2.0#分母初始化为2
p1Denom = 2.0
for i in range(numTrain):
if trainGategory[i] == 1: #如果是垃圾邮件
p1Num += trainMat[i] #把属于同一类的文本向量相加,实质是统计某个词条在该类文本中出现频率
p1Denom += sum(trainMat[i]) #把垃圾邮件向量的所有元素加起来,表示垃圾邮件中的所有词汇
else:
p0Num += trainMat[i]
p0Denom += sum(trainMat[i])
p1Vec = log(p1Num/p1Denom) #统计词典中所有词条在垃圾邮件中出现的概率
p0Vec = log(p0Num/p0Denom) #统计词典中所有词条在正常文邮件中出现的概率
return p0Vec p1Vec pAbusive
# classfy funtion
def classfy(vec2classfy p0Vec p1Vec pClass1):
p1 = sum(vec2classfy*p1Vec)+log(pClass1)
p0 = sum(vec2classfy*p0Vec)+log(1-pClass1)
if p1 > p0:
return 1
else:
return 0
def testmain():
docList = [];classList = []
res = open(‘spam_100.utf8‘ ‘rb‘)
res1 = open(‘ham_100.utf8‘ ‘rb‘)
for i in range(100):
wordList = textParse(res.readline().decode(‘utf-8‘))
docList.append(wordList)
classList.append(1)
wordList = textParse(res1.readline().decode(‘utf-8‘))
docList.append(wordList)
classList.append(0)
vocabList = createVocabList(docList)
# select test data
tdocList = [];tclassList = []
res2 = open(‘test.utf8‘ ‘rb‘)
for i in range(50):
twordList = textParse(res2.readline().decode(‘utf-8‘))
tdocList.append(twordList)
tclassList.append(0)
for i in range(50):
twordList = textParse(res2.readline().decode(‘utf-8‘))
tdocList.append(twordList)
tclassList.append(1)
trainMat = [];trainClass = []
trainSet = range(200);testSet = range(100)
for docIndex in trainSet:
trainMat.append(bagOfWord2Vec(vocabList docList[docIndex]))
trainClass.append(classList[docIndex])
p0 p1 pSpam=trainNB(array(trainMat) array(trainClass))
errCount=0
for docIndex in testSet:
wordVec = bagOfWord2Vec(vocabList tdocList[docIndex])
if classfy(array(wordVec) p0 p1 pSpam) != tclassList[docIndex]:
errCount += 1
print(“classcification error:“ tdocList[docIndex])
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 740 2018-05-13 20:14 bayes\.idea\bayes.iml
文件 1053 2018-05-13 19:00 bayes\.idea\modules.xm
文件 32174 2018-05-13 20:22 bayes\.idea\workspace.xm
文件 3491 2018-05-02 14:31 bayes\bayes.py
文件 59489 2018-04-22 20:15 bayes\ham_100.utf8
文件 44997 2018-04-22 20:15 bayes\spam_100.utf8
文件 38749 2018-04-22 20:15 bayes\test.utf8
目录 0 2018-05-13 20:22 bayes\.idea
目录 0 2018-05-02 14:31 bayes
----------- --------- ---------- ----- ----
180693 9
- 上一篇:Blender 基础教程 (中文语音)
- 下一篇:Igarch模型
相关资源
- Opencv+Tensorflow入门人工智能处理无密完
- 运用ID3算法训练决策树
- BPNet多层网络学习算法可以实现有效的
- 文书网最新版getKey.js(获取vl5x值)
- djangol实现学生管理网站
- 基于西瓜书的聚类代码和介绍
- Sublime3护眼主题
- 压缩感知稀疏贝叶斯算法
- tensorflow-2.1.0-cp37-cp37m-win_amd64.whl
- 12306爬虫源码
-
failed to execute sc
ript 解决方案+命令行 - 一次性口令身份认证
- XGboost训练印第安人糖尿病数据
- 查找两幅图中不同
- PyQt5:简单视频播放器
- Machine learning DecisionTree
- Face-tracking.zip
- [MIT][计算机科学及编程导论][6.00][课程
- 花卉识别程序+数据集
- SciHub神器,基于爬虫原理
- 机器学习-泰坦尼克号船员获救
- 基于Flask的留言板Demo
- tensorflow-2.3.0-cp37-cp37m-win_amd64.whl
- tensorflow麻将智能出牌源码
- PyCharm汉化后设置界面打不开完美解决
- QQLogin.ui
- django试题发布和测验
- PIL中文手册
- subdomain.txt
- 神经网络和深度学习—吴恩达 第三周
评论
共有 条评论