朴素贝叶斯模型是贝叶斯理论中最简单的一类,基本假设有两个,一是特征相互独立,二是特征同等重要,这样可以大大简化计算,虽然在实际中属性之间未必是相互独立的,甚至存在严重的依赖性(此时会用到半朴素贝叶斯模型,比如贝叶斯网),但是这并不影响朴素贝叶斯的使用价值。在很多情况下可以取得很好的效果。

以下用一个简单的模拟数据集来展示了朴素贝叶斯模型的基本实现过程,使用python3.6版本

from numpy import *def loaddata():datalist = [['my', 'dog', 'has', 'flea', 'problems', 'please', 'help', 'a'],
                ['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', 'have'],
                ['quit', 'buying', 'worthless', 'dog', 'food', 'stupid']]classvect = [0, 1, 0, 1, 0, 1]# 类别标签,0表示不含有侮辱性语言,1表示含有侮辱性语言
    return datalist, classvect#创建dataset
def createvocabset(dataset):vocabset = set([])for item in dataset:vocabset = vocabset | set(item)return list(vocabset)#将测试字符串转化为向量
def word2vect(wordset, testword):resultvect = [0]*len(wordset)for item in testword:if item in wordset:indx = wordset.index(item)resultvect[indx] = 1
        else:print(item + 'is not in wordlist!')return resultvectdef calcondiproba(wordlist, wordset, classvect):wordmatrix = []for item in wordlist:wordmatrix.append(word2vect(wordset, item))numwords = len(wordmatrix[0])numvects = len(wordmatrix)p1 = ones(numwords)p0 = ones(numwords)for i in range(numvects):if classvect[i] == 1:p1 += wordmatrix[i]else:p0 += wordmatrix[i]p1 = log(p1/(sum(p1)+2))p0 = log(p0/(sum(p0)+2))pA = sum(classvect)/len(classvect)return p1, p0, pAdef classify(vect2classify, p1, p0, pA):P1 = sum(vect2classify * p1) + log(pA)P0 = sum(vect2classify * p0) + log(1 - pA)if P1 > P0:return 1
    else:return 0

#测试主函数
def test_classify(testwords):testwords  = testwords.split()wordlist, classvect = loaddata()wordset = createvocabset(wordlist)p1, p0, pA = calcondiproba(wordlist, wordset, classvect)testvect = word2vect(wordset, testwords)result = classify(testvect, p1, p0, pA)print(result)#测试
mysetence1 = "I have a stupid dog"
test_classify(mysetence1)
mysetence2 = "my dog is worthless"
test_classify(mysetence2)

朴素贝叶斯模型的简单应用相关推荐

  1. 判断喜欢的电影类型——朴素贝叶斯模型的简单应用(1)

    之前我做了一个豆瓣电影信息的爬取 https://blog.csdn.net/weixin_43374551/article/details/84029439 ,共获得了8608部电影的概要信息.现在 ...

  2. 朴素贝叶斯模型简单理解

    小白一个,如果有问题欢迎大家指正. 朴素贝叶斯法 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法.对于给定的训练数据集,首先基于特征条件独立假设学习输入\输出的联合概率分布:然后基于此模型, ...

  3. 一步步教你轻松学朴素贝叶斯模型算法理论篇1

    一步步教你轻松学朴素贝叶斯模型理论篇1 (白宁超2018年9月3日17:51:32) 导读:朴素贝叶斯模型是机器学习常用的模型算法之一,其在文本分类方面简单易行,且取得不错的分类效果.所以很受欢迎,对 ...

  4. EM算法--应用到三个模型: 高斯混合模型 ,混合朴素贝叶斯模型,因子分析模型...

    主要是对Ng教授的machinelearning视频学习和参考jerryLead讲义整理(特别鸣谢~): 由"判别模型.生成模型与朴素贝叶斯方法 "一节得知: 判别模型求的是条件概 ...

  5. 判别模型、生成模型和朴素贝叶斯模型

    1判别模型与生成模型 上篇报告中提到的回归模型是判别模型,也就是根据特征值来求结果的概率.形式化表示为,在参数确定的情况下,求解条件概率.通俗的解释为在给定特征后预测结果出现的概率. 比如说要确定一只 ...

  6. 朴素贝叶斯模型、SVM模型笔记

    目录 一.朴素贝叶斯模型 1 应用场景 2 模型优点 3 模型缺点 4 模型种类 4.1 高斯贝叶斯分类器 4.2 多项式贝叶斯分类器 4.3 伯努利贝叶斯分类器 二.SVM模型 1 算法思想 2 算 ...

  7. 【人工智能】— 贝叶斯网络、概率图模型、全局语义、因果链、朴素贝叶斯模型、枚举推理、变量消元

    [人工智能]- 贝叶斯网络 频率学派 vs. 贝叶斯学派 贝叶斯学派 Probability(概率): 独立性/条件独立性: Probability Theory(概率论): Graphical mo ...

  8. 朴素贝叶斯模型 多元伯努利事件模型+多项式事件模型 Multi-Variate Bernoulli Event Model and Multinomial Event Model

    朴素贝叶斯模型(Naïve Bayes Models): 适用于离散分布的朴素贝叶斯模型是个概率模型.生成式模型.广泛用于文本分类,自然语言处理和模式识别. 生成式和判别式模型区别: 贝叶斯公式如下: ...

  9. 【Python】利用高斯朴素贝叶斯模型实现光学字符识别

    光学字符识别问题:手写数字识别.简单点说,这个问题包括图像中字符的定位和识别两部分.为了演示方便,我们选择使用 Scikit-Learn 中自带的手写数字数据集. 1.加载并可视化手写数字 首先用 S ...

最新文章

  1. html5字体颜色自动转换,【转】js里alert里的字体颜色怎么设置:字体颜色方法;fontcolor(color)...
  2. 汤晓鸥谈深度学习三大核心要素:算法设计、高性能的计算能力以及大数据
  3. @ReponseBody返回json格式的数据
  4. 元素周期表排列的规律_元素周期表诞生150周年,这些有趣的元素性质你都知道吗?...
  5. Scott Mitchell 的ASP.NET 2.0数据教程之四十五::DataList和Repeater数据排序(三)
  6. adb logcat 保存_adb logcat命令查看并过滤android输出log
  7. 【C】sizeof(空结构体/空类)的大小
  8. nginx系列11:负载均衡哈希算法ip_hash与hash模块
  9. Http请求返回最外层的模型
  10. 目标检测 SSD网络结构
  11. 大数据 | 抖音,一款神奇的APP
  12. CRA与craco配置移动端
  13. 有什么高效的Windows笔记软件?3款优秀的笔记软件推荐!
  14. 离DApp的爆发还差什么?|链捕手
  15. 【OpenCV】 ⚠️高手勿入! 半小时学会基本操作 24⚠️ SIFT 算法
  16. 永磁同步直线电机仿真实例,仿真教学 maxwell16.0版本 包括图中模型以及一个仿真设置要点word文档教程
  17. Java开发-搭建基础开发环境(JDK、Maven、Tomcat、Git、Eclipse、IDEA)
  18. 大数据征信如何提升金融机构风控能力
  19. 前端框架Layui学习五:弹出层和数据表格
  20. php发送邮件 企业邮箱,ThinkPHP如何企业邮箱通过PHPMailer发送邮件

热门文章

  1. html()函数用法
  2. unity 2017_Unity GDC 2017主题演讲的更新
  3. Android 自定义动画(实现类似分享动画)
  4. vipjr正规吗?为何它能成为目前数一数二的口碑教育平台?
  5. axios的使用与数据的mock
  6. 阿里集团口碑将于南京举行大型技术分享及专场招聘会
  7. linux虚拟机network服务显示active(exited)
  8. 如何查看手机的android版本号,android系统如何获取imei号码,获取手机型号和系统版本号...
  9. 万字长文 | 2023届推荐算法岗面经总结!
  10. 【数据存储结构】int32的二进制存储形式