【朴素贝叶斯】深入浅出讲解朴素贝叶斯算法(公式、原理)

这篇具有很好参考价值的文章主要介绍了【朴素贝叶斯】深入浅出讲解朴素贝叶斯算法(公式、原理)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 朴素贝叶斯算法,深入浅出讲解自然语言处理,机器学习,算法,概率论,机器学习,分类本文收录于《深入浅出讲解自然语言处理》专栏,此专栏聚焦于自然语言处理领域的各大经典算法,将持续更新,欢迎大家订阅!
  • 朴素贝叶斯算法,深入浅出讲解自然语言处理,机器学习,算法,概率论,机器学习,分类​个人主页:有梦想的程序星空
  • 朴素贝叶斯算法,深入浅出讲解自然语言处理,机器学习,算法,概率论,机器学习,分类​个人介绍:小编是人工智能领域硕士,全栈工程师,深耕Flask后端开发、数据挖掘、NLP、Android开发、自动化等领域,有较丰富的软件系统、人工智能算法服务的研究和开发经验。
  • 朴素贝叶斯算法,深入浅出讲解自然语言处理,机器学习,算法,概率论,机器学习,分类​如果文章对你有帮助,欢迎朴素贝叶斯算法,深入浅出讲解自然语言处理,机器学习,算法,概率论,机器学习,分类关注朴素贝叶斯算法,深入浅出讲解自然语言处理,机器学习,算法,概率论,机器学习,分类点赞朴素贝叶斯算法,深入浅出讲解自然语言处理,机器学习,算法,概率论,机器学习,分类收藏朴素贝叶斯算法,深入浅出讲解自然语言处理,机器学习,算法,概率论,机器学习,分类订阅。

朴素贝叶斯(Naive Bayes)是一种简单经典的分类算法,它的经典应用案例为人所熟知:文本分类(如垃圾邮件过滤)。

1、贝叶斯定理

先验概率:即基于统计的概率,是基于以往历史经验和分析得到的结果,不需要依赖当前发生的条件。

后验概率:则是从条件概率而来,由因推果,是基于当下发生了事件之后计算的概率,依赖于当前发生的条件。

条件概率:记事件A发生的概率为P(A),事件B发生的概率为P(B),则在B事件发生的前提下,A事件发生的概率即为条件概率,记为P(A|B)。

贝叶斯公式:贝叶斯公式便是基于条件概率,通过P(B|A)来求P(A|B),如下:

将A看成“规律”,B看成“现象”,那么贝叶斯公式看成:

朴素贝叶斯算法,深入浅出讲解自然语言处理,机器学习,算法,概率论,机器学习,分类

全概率公式:表示若事件构成一个完备事件组且都有正概率,则对任意一个事件B都有公式成立: 

将全概率公式带入贝叶斯公式中,得到:

2、朴素贝叶斯算法的原理

特征条件假设:假设每个特征之间没有联系,给定训练数据集,其中每个样本都包括维特征,即,类标记集合含有种类别,即。

对于给定的新样本,判断其属于哪个标记的类别,根据贝叶斯定理,可以得到属于类别的概率:

后验概率最大的类别记为预测类别,即:。

朴素贝叶斯算法对条件概率分布作出了独立性的假设,通俗地讲就是说假设各个维度的特征互相独立,在这个假设的前提上,条件概率可以转化为:

代入上面贝叶斯公式中,得到:

于是,朴素贝叶斯分类器可表示为:

因为对所有的,上式中的分母的值都是一样的,所以可以忽略分母部分,朴素贝叶斯分类器最终表示为:

适用范围:

  • 朴素贝叶斯只适用于特征之间是条件独立的情况下,否则分类效果不好,这里的朴素指的就是条件独立。
  • 朴素贝叶斯主要被广泛地使用在文档分类中。

朴素贝叶斯常用的三个模型有:

  • 高斯模型:处理特征是连续型变量的情况。
  • 多项式模型:最常见,要求特征是离散数据。
  • 伯努利模型:要求特征是离散的,且为布尔类型,即true和false,或者1和0。

4、拉普拉斯平滑

为了解决零概率的问题,法国数学家拉普拉斯最早提出用加1的方法估计没有出现过的现象的概率,所以加法平滑也叫做拉普拉斯平滑。假定训练样本很大时,每个分量的计数加1造成的估计概率变化可以忽略不计,但可以方便有效的避免零概率问题。

是一个多项乘法公式,其中有一项数值为0,则整个公式就为0显然不合理,避免每一项为零的做法就是在分子、分母上各加一个数值。

朴素贝叶斯算法,深入浅出讲解自然语言处理,机器学习,算法,概率论,机器学习,分类

表示分类的样本数,为样本总数,是分类总数。

朴素贝叶斯算法,深入浅出讲解自然语言处理,机器学习,算法,概率论,机器学习,分类

表示分类属性的样本数,表示分类的样本数,表示属性的可能的取值数。

在实际的使用中也经常使用加来代替简单加1 如果对个计数都加上,这时分母也要记得加上。

4、朴素贝叶斯算法的优缺点

优点:

1、朴素贝叶斯模型有稳定的分类效率。
2、对小规模的数据表现很好,能处理多分类任务,适合增量式训练,尤其是数据量超出内存时,可以一批批的去增量训练。
3、对缺失数据不太敏感,算法也比较简单,常用于文本分类。

缺点:

1、需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。
2、对输入数据的表达形式很敏感(离散、连续,值极大极小之类的)。

5、python代码实现

库方法:sklearn.naive_bayes.MultinomialNB(alpha = 1.0)

其中,alpha:拉普拉斯平滑系数

实验内容:sklearn20类新闻分类,20个新闻组数据集包含20个主题的18000个新闻组帖子。

实验方法:首先,加载20类新闻数据,并进行分割。然后,生成文章特征词,接着,使用朴素贝叶斯分类器进行预估。

代码实现:

# coding:utf-8
 
from sklearn.datasets import fetch_20newsgroups
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
 
 
def naviebayes():
    news = fetch_20newsgroups()
    # 进行数据分割
    x_train, x_test, y_train, y_test = train_test_split(news.data, news.target, test_size=0.25)
    # 对数据集进行特征抽取
    tf = TfidfVectorizer()
    # 以训练集当中词的列表进行每篇文章重要性统计['a','b','c','d']
    x_train = tf.fit_transform(x_train)
    print(tf.get_feature_names())
    x_test = tf.transform(x_test)
    # 进行朴素贝叶斯算法的预测
    mlt = MultinomialNB(alpha=1.0)
    print(x_train.toarray())
    mlt.fit(x_train, y_train)
    y_predict = mlt.predict(x_test)
    print("预测的文章类别为:", y_predict)
    # 得出准确率
    print("准确率为:", mlt.score(x_test, y_test))
 
if __name__ == '__main__':
    naviebayes()

关注微信公众号【有梦想的程序星空】,了解软件系统和人工智能算法领域的前沿知识,让我们一起学习、一起进步吧!文章来源地址https://www.toymoban.com/news/detail-779217.html

到了这里,关于【朴素贝叶斯】深入浅出讲解朴素贝叶斯算法(公式、原理)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入浅出讲解Stable Diffusion原理,新手也能看明白

    最近一段时间对多模态很感兴趣,尤其是Stable Diffusion,安装了环境,圆了自己艺术家的梦想。看了这方面的一些论文,也给人讲过一些这方面的原理,写了一些文章,具体可以参考我的文章: 北方的郎:图文匹配:Clip模型介绍 北方的郎:VQGAN(Vector Quantized Generative Adversar

    2024年02月08日
    浏览(45)
  • 随机森林算法深入浅出

    目录 一 随机森林算法的基本原理 二 随机森林算法的优点 1. 随机森林算法具有很高的准确性和鲁棒性 2. 随机森林算法可以有效地避免过拟合问题 3. 随机森林算法可以处理高维度数据 4. 随机森林算法可以评估特征的重要性 三 随机森林算法的缺点 1. 随机森林算法对于少量数

    2023年04月08日
    浏览(57)
  • 深入浅出排序算法之基数排序

    目录 1. 前言 1.1 什么是基数排序⭐⭐⭐ 1.2 执行流程⭐⭐⭐⭐⭐ 2. 代码实现⭐⭐⭐ 3. 性能分析⭐⭐ 3.1 时间复杂度 3.2 空间复杂度 一个算法,只有理解算法的思路才是真正地认识该算法,不能单纯记住某个算法的实现代码! (1) 通过键值得各个位的值,将要排序的元素分配

    2024年02月08日
    浏览(56)
  • 深入浅出排序算法之计数排序

    目录 1. 原理 2. 代码实现 3. 性能分析 首先看一个题目,有n个数,取值范围是 0~n,写出一个排序算法,要求时间复杂度和空间复杂度都是O(n)的。 为了达到这种效果,这一篇将会介绍一种 不基于比较的排序方法。 这种方法被称为计数排序。 计数排序的思路是这样的,对于每

    2024年02月06日
    浏览(40)
  • 【数据结构与算法篇】深入浅出——二叉树(详解)

    ​👻内容专栏:《数据结构与算法专栏》 🐨本文概括: 二叉树是一种常见的数据结构,它在计算机科学中广泛应用。本博客将介绍什么是二叉树、二叉树的顺序与链式结构以及它的基本操作,帮助读者理解和运用这一重要概念。 🐼本文作者: 花 蝶 🐸发布时间:2023.6.5

    2024年02月08日
    浏览(50)
  • 深入浅出解析LoRA完整核心基础知识 | 【算法兵器谱】

    Rocky Ding 公众号:WeThinkIn 【算法兵器谱】栏目专注分享AI行业中的前沿/经典/必备的模型论文,并对具备划时代意义的模型论文进行全方位系统的解析,比如Rocky之前出品的爆款文章Make YOLO Great Again系列。也欢迎大家提出宝贵的优化建议,一起交流学习💪 大家好,我是Rocky。

    2024年02月11日
    浏览(47)
  • 【数据结构与算法】深入浅出:单链表的实现和应用

      🌱博客主页:青竹雾色间. 😘博客制作不易欢迎各位👍点赞+⭐收藏+➕关注  ✨ 人生如寄,多忧何为  ✨ 目录 前言 单链表的基本概念 节点 头节点 尾节点 单链表的基本操作 创建单链表 头插法: 尾插法: 插入(增)操作  删除(删)操作: 查找(查)操作: 修改(改

    2024年02月08日
    浏览(74)
  • 深入浅出opencv人脸识别,准确率95%,云服务器数据库存储人脸信息,代码全过程讲解以及心得

    此文章记录自己从实现人脸识别到把识别到的数据上传到云端的数据库,随时随地只要有网就能登录服务器,查看人员进出的情况。我会把我记得的所有的错误和经验都分享出来,希望能对大家有所帮助也是对自己的一个总结。 1:人脸采集: 首先输入学号和姓名,设定一个

    2024年02月06日
    浏览(50)
  • 深入浅出解析Stable Diffusion完整核心基础知识 | 【算法兵器谱】

    Rocky Ding 公众号:WeThinkIn 最新更新: Rocky也一直在更新Stable Diffusion系列的文章内容,包括最新发布的Stable Diffusion XL。Rocky都进行了全方位的深入浅出的解析, 码字真心不易,希望大家能给Rocky正在撰写更新的下面两篇文章多多点赞,万分感谢: 深入浅出完整解析Stable Diffus

    2024年02月10日
    浏览(43)
  • 【动手学深度学习】深入浅出深度学习之RMSProp算法的设计与实现

    目录 🌞一、实验目的 🌞二、实验准备 🌞三、实验内容 🌼1. 认识RMSProp算法 🌼2. 在optimizer_compare_naive.py中加入RMSProp 🌼3. 在optimizer_compare_mnist.py中加入RMSProp 🌼4. 问题的解决 🌞四、实验心得 深入学习RMSProp算法的原理和工作机制; 根据RMSProp算法的原理,设计并实现一个

    2024年04月10日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包