bayes python 源代码
#coding: utf-8
#date: 2016-07-10
#mail: artorius.mailbox@qq.com
#author: xinwangzhong -version 0.1from numpy import *def trainNB0(trainMatrix,trainCatergory):#适用于二分类问题,其中一类的标签为1#return#p0Vect:标签为0的样本中,出现某个特征对应的概率#p1Vect:标签为1的样本中,出现某个特征对应的概率#pAbusive:标签为1的样本出现的概率numTrainDoc = len(trainMatrix)numWords = len(trainMatrix[0])pAbusive = sum(trainCatergory)/float(numTrainDoc)#防止多个概率的成绩当中的一个为0#p0Num: 在训练样本标签为0的数据中,所有特征的对应value值之和,为矩阵#p1Num: 在训练样本标签为1的数据中,所有特征的对应value值之和,为矩阵p0Num = ones(numWords)p1Num = ones(numWords)#p0Denom:在训练样本标签为0的数据中,所有特征的value值之和,为标量#p1Denom:在训练样本标签为1的数据中,所有特征的value值之和,为标量#为什么初始化为2??p0Denom = 2.0p1Denom = 2.0for i in range(numTrainDoc):if trainCatergory[i] == 1:p1Num +=trainMatrix[i]p1Denom += sum(trainMatrix[i])else:p0Num +=trainMatrix[i]p0Denom += sum(trainMatrix[i])#出于精度的考虑,否则很可能到限归零,change to log()p1Vect = log(p1Num/p1Denom)p0Vect = log(p0Num/p0Denom)return p0Vect,p1Vect,pAbusivedef classifyNB(vec2Classify, p0Vec, p1Vec, pClass1):#element-wise mult,只算分子的log值,因为只需比较大小,所以正负无关p1 = sum(vec2Classify * p1Vec) + log(pClass1) p0 = sum(vec2Classify * p0Vec) + log(1.0 - pClass1)if p1 > p0:return 1else: return 0
####################3#from numpy import *
#import os
#os.chdir(r"/home/luogan/lg/Python728/bayes/classical-machine-learning-algorithm-master/bayesian")
#import bayes
def loadDataSet():postingList=[['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'],['maybe', 'not', 'take', 'him', 'to', 'dog', 'park', 'stupid'],['my', 'dalmation', 'is', 'so', 'cute', 'I', 'love', 'him'],['stop', 'posting', 'stupid', 'worthless', 'garbage'],['mr', 'licks', 'ate', 'my', 'steak', 'how', 'to', 'stop', 'him'],['quit', 'buying', 'worthless', 'dog', 'food', 'stupid']]classVec = [0,1,0,1,0,1]#1 is abusive, 0 notreturn postingList,classVecdef createVocabList(dataSet):vocabSet = set([]) #create empty setfor document in dataSet:vocabSet = vocabSet | set(document) #union of the two setsreturn list(vocabSet)def setOfWords2Vec(vocabList, inputSet):returnVec = [0]*len(vocabList)for word in inputSet:if word in vocabList:returnVec[vocabList.index(word)] = 1else: print ("the word: %s is not in my Vocabulary!" % word)return returnVecdef testingNB():listOPosts,listClasses = loadDataSet()myVocabList = createVocabList(listOPosts)trainMat=[]for postinDoc in listOPosts:trainMat.append(setOfWords2Vec(myVocabList, postinDoc))p0V,p1V,pAb = trainNB0(array(trainMat),array(listClasses))testEntry = ['love', 'my', 'dalmation']thisDoc = array(setOfWords2Vec(myVocabList, testEntry))print (testEntry,'classified as: ',classifyNB(thisDoc,p0V,p1V,pAb))testEntry = ['stupid', 'garbage']thisDoc = array(setOfWords2Vec(myVocabList, testEntry))print (testEntry,'classified as: ',classifyNB(thisDoc,p0V,p1V,pAb))def bagOfWords2VecMN(vocabList, inputSet):returnVec = [0]*len(vocabList)for word in inputSet:if word in vocabList:returnVec[vocabList.index(word)] += 1return returnVecdef textParse(bigString): #input is big string, #output is word listimport relistOfTokens = re.split(r'\W*', bigString)return [tok.lower() for tok in listOfTokens if len(tok) > 2] if __name__ == "__main__":listOPosts,listClasses = loadDataSet()myVocabList = createVocabList(listOPosts)#print (myVocabList)trainMat = []for postinDoc in listOPosts:trainMat.append(setOfWords2Vec(myVocabList, postinDoc))p0V,p1V,pAb = trainNB0(trainMat, listClasses)testingNB()# spamTest()
bayes python 源代码相关推荐
- 深度好玩!10个有趣且易上手的AI项目(附 Python 源代码)
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|机器学习算法那些事 人工智能已经成为我们生活的一部分.我 ...
- python单词翻译-完成自动查找翻译单词的python源代码
下面这段代码需要完成的是关于完成自动查找翻译单词的python源代码,找到目标单词在网上词典完成翻译的过程. #!/usr/bin/python #coding=utf-8 import urllib ...
- python自动源码_谷歌推出Tangent开源库,在Python源代码上做自动微分
原标题:谷歌推出Tangent开源库,在Python源代码上做自动微分 李林 编译自 Google Research Blog 谷歌今天推出了一个新的开源Python自动微分库:Tangent. 和现 ...
- 看我如何发现(并修复)Python 源代码中的漏洞
聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 James Kettle 此前曾就 web 缓存投毒发布了一篇研究文章,本文作者为了更深入地了解这个领域的知识并查找开源领域中的相关漏洞,研究了 ...
- Python源代码文件的文本编码
Python源代码文件的文本编码 源代码的编码问题对于任何语言的源文件都是存在的,只不过对于脚本语言,这个问题更突出一些. 有的人可能会说,既然源代码在文本编辑器中可以正常显示,说明编码没有问题,编辑 ...
- 10个有趣且易上手的AI项目(附Python源代码)
来源 | piprogramming 出品 | 大数据文摘 编译 | 青柠 人工智能已经成为我们生活的一部分.我们在日常生活中有意或无意地使用它,如推荐影片,图像识别,语音识别,网站推荐产品等. ...
- 生物特征识别性能的不同衡量标准以及python源代码
生物特征识别性能的不同衡量标准以及python源代码 XB D., xingbod@gmail.com 简介 本文介绍不同任务对应的不同的评价标准.验证任务使用EER,ROC, identificat ...
- python源代码的后缀名是什么_Python
[单选题]Python 源代码文件的后缀为( ). [单选题]/etc/passwd和/etc/shadow两个文件的权限正确的是( ) [单选题]修改以太网卡mac地址的命令为( ). [单选题]关 ...
- python 代码转程序_如何用pyinstaller把自己编写的python源代码转换成可执行程序?...
昨天慢步熬夜写了一篇干货满满的文章,不知道什么原因,文章并未被推荐. 今天再来换个方式写一次. 把自己编写的python源代码转换成可执行程序 笔者继续用自编的<货币兑换程序3.0>为例. ...
最新文章
- Nature:剖腹产到底好不好?——肠道菌群的视角
- 2020mysql下载教程_Windows10 安装MySQL详细教程2020版 亲测亲写
- 通过Http管理Solr Core,实现索引的分类
- 关于startActivityForResult
- python分配buffer_Node.js中的buffer如何和python中的buffer相对应
- GPUImage API 文档之GPUImagePicture类
- [转]java二维码生成与解析代码实现
- 使用Spectre.Console创建漂亮的控制台应用程序
- Nerv --- React IE8 兼容方案
- 搭建FastDFS分布式文件存储系统教程
- 软考信息安全工程师学习笔记四(1.4 信息安全标准化知识)
- Docker日志自动化: ElasticSearch、Logstash、Kibana以及Logspout
- mysql 索引原理详解
- SpringBoot下结合使用Cacheable、CacheEvict和Scheduled注解轻松实现可过期本地缓存
- Linux vi vim 宏 批量操作 重复操作 宏录制
- 计算机网络知识点全面总结(一篇全懂)
- C语言程序设计习题参考答案
- 图片怎么压缩成指定大小?如何将照片变成规定大小?
- linux版本、查找、重启等命令
- SAR图像相干斑滤波算法
热门文章
- 计算机网络·域名等级及域名服务器的命名
- O029、教你看懂OpenStack日志
- Qtum量子链作客第四届拉美商业科技大会
- 第1阶段——uboot分析之查找命令run_command函数和命令定义过程(6)
- 【C语言】单链表的所有操作的实现(包括PopBack、PushBack、PopFront、PushFront、Insert)...
- Linux(centos6.5)下安装jenkins
- saltstack实战-6
- java web 读取配置文件两种方法
- windows批量创建用户
- Asp.net 关于错误提示 类型“XXX1”在未被引用的程序集中定义,必须添加对程序集XXX2的引用...