总结几十套菠菜网站源代码技巧下载搭建开发大全

环境

熊猫功能增强版,增加后台的一键反水列表功能  下载
千旺彩票(大发二开)多个快三带极速六合AB盘(含手机版)  下载
2018微信公众号商业运营采集自动刷新升级版(带手机端+微信公众号+后台管理+机器人)  下载
大发彩票二开带腾讯分分彩极速时时彩(含手机版)  下载
皇冠体育带手机版完整版可直接上线运营  下载
新版拉菲彩票源码+带SSC龙虎和同时下注(ThinkPHP内核开发-HTML5全屏自适应带开奖软件+WAP独立端)  下载
极速开奖网后台可控(极速SSC、极速赛车、极速飞艇)  下载
OA信用盘新增三个极速彩版本(极速赛车、极速SSC、极速飞艇)  下载
1689熊猫增加视频版本(PC+手机端、带有视频动画开奖效果)——含手机端、前后台带极速赛车、极速SSC、极速快三等游戏  下载
2018微信公众号商业运营采集自动刷新升级版(带手机端+微信公众号+后台管理+机器人)  下载
新快三天恒版程序带手机版  下载
澳娱国际微信赛车系统 赛车源码飞艇pc蛋蛋加拿大28番摊农场  下载
彩38完整修复版+H5自适应手机版  下载
新版皇冠体育信用盘足球PC电脑版+最新手机版  下载
迪士尼熊猫乐园二次开发全套源码分享带急速赛车,后台带AB盘稳定无错  下载
各地快三幸运彩php源码 使用thinkphp框架开发  下载

开发语言:PHP+MySql

数据

8000封邮件数据

  • 正常邮件: 7063封
  • 垃圾邮件: 7775封
  • 测试邮件:392封(其中文件名低于1000的均为正常邮件)

流程图

此处将结果输出到result.txt文件中

各词概率保存到wordsProb.txt中

Code:

def getProbWord(self, testDict, normalDict, spamDict, numNormal, numSpam): """ 计算对分类结果影响最大的15个词 :param testDict: 测试数据字典 :param normalDict: 正常邮件字典 :param spamDict: 垃圾邮件字典 :param numNormal: 正常邮件的数量 :param numSpam: 垃圾邮件的数量 :return wordProbList: 对分类结果影响最大的15个词 """ wordProbList = {} for word, num in testDict.items(): # 当词不在垃圾邮件词表中,在正常邮件词表中,计算概率 if word in spamDict.keys() and word in normalDict.keys(): # 求类先验概率 # 正常邮件 pw_n = normalDict[word] / numNormal # 垃圾邮件 pw_s = spamDict[word] / numSpam ps_w = pw_s / (pw_s + pw_n) wordProbList[word] = ps_w # 当词在垃圾邮件词表中,不在正常邮件词表中,计算概率 if word in spamDict.keys() and word not in normalDict.keys(): pw_s = spamDict[word] / numSpam pw_n = 0.01 ps_w = pw_s / (pw_s + pw_n) wordProbList[word] = ps_w # 当词在垃圾邮件词表中,而且在正常邮件词表中,计算概率 if word not in spamDict.keys() and word in normalDict.keys(): pw_s = 0.01 pw_n = normalDict[word] / numNormal ps_w = pw_s / (pw_s + pw_n) wordProbList[word] = ps_w # 当词不在垃圾邮件词表中,也不在正常邮件词表中,计算概率 if word not in spamDict.keys() and word not in normalDict.keys(): wordProbList[word] = 0.5 # 0.4 sorted(wordProbList.items(), key=lambda d: d[1], reverse=True)[0:15] return wordProbList def calBayes(self, wordList, spamDict, normalDict): """ 计算贝叶斯概率 :param wordList: 词表 :param spamDict: 垃圾邮件词语字典 :param normalDict: 正常邮件词语字典 :return: 概率 """ ps_w = 1 ps_n = 1 with open('wordsProb.txt', 'a', encoding='utf-8') as f: for word, prob in wordList.items(): f.write(word + ":" + str(prob) + "\n") ps_w *= prob ps_n *= 1 - prob p = ps_w / (ps_w + ps_n) return p def calAccuracy(self, testResult): """ 计算精度 :return: """ rightCount = 0 errorCount = 0 for name, catagory in testResult.items(): if (int(name) < 1000 and catagory == 0) or (int(name) > 1000 and catagory == 1): rightCount += 1 else: errorCount += 1 return rightCount / (rightCount + errorCount)

猜你喜欢

转载自www.cnblogs.com/ghfjsa/p/9396765.html