机器学习 | 贝叶斯方法

        不同于KNN最近邻算法的空间思维,线性算法的线性思维,决策树算法的树状思维,神经网络的网状思维,SVM的升维思维。

        贝叶斯方法强调的是 先后的因果思维。

        监督式模型分为判别式模型和生成式模型。

        

        判别模型和生成模型的区别:

                判别式模型:输入一个特征X可以直接得到一个y。

                生成式模型:上来先学习一个联合概率分布 p(x,y),

                                        再用他根据贝叶斯法则求条件概率密度分布。

                                        —— 没有决策边界的存在

        判别式数据对于数据分布特别复杂的情况,比如文本图像视频;

        而生成式模型对于数据有部分特征缺失的情况下效果更好,

        而且更容易添加数据的先验知识 p(x)

        


1、核心思想和原理

贝叶斯公式

        建立了四个概率分布之间的关系,已知变量 X 和 未知变量(模型参数)w 之间的计算关系

        假定 X 表示数据,W 表示模型的参数

        Likelihood翻译成可能性或者是似然函数,最大似然估计指的就是这个

        

        以下图中 s 表示状态, o 表示观测。

        

参数估计

        1、最大似然估计 MLE

        2、最大后验估计 MAP

        3、贝叶斯估计


2、朴素贝叶斯分类

        我们知道分类问题是 给定特征 X,输出分类标记 y

        

        那么朴素贝叶斯方法是如何由指定特征得到分类类别的呢?

        2.1、举个栗子

                 

                能不能直接根据这些经验(上面的数据),来判断一个境外人员有没有得新冠呢?

                —— 转换为数学语言即

                

                比较难求的显然就是 Likelihood,所以朴素贝叶斯假设特征之间相互独立。

                

                根据中心极限定理,频率就等于概率,虽然这里数据没有那么多,也一样可以这么算

                

                


2.2、朴素贝叶斯分类及其代码实现

  • 逻辑简单,易于实现
  • 效率高,时空开销小
  • 条件独立假设不成立则分类效果一般
  • 适用于特征相关性较小时

 代码实现:

import numpy as np
X = [[1,0,0,1],
     [0,1,0,0],
     [1,1,0,0],
     [0,1,2,0],
     [1,0,0,0],
     [1,0,0,0],
     [1,1,2,1],
     [0,1,1,0],
     [1,1,1,0],
     [0,0,2,0],
     [1,1,0,1],
     [1,1,0,1]]

y = [0,0,1,1,0,0,1,1,1,1,0,0]

t=[[0,0,0,1]]
from sklearn.naive_bayes import BernoulliNB
bnb = BernoulliNB()
bnb.fit(X,y)
bnb.predict_proba(t)
array([[0.875, 0.125]])


2,3、朴素贝叶斯家族

         

2.3.1、伯努利朴素贝叶斯与多项式朴素贝叶斯

        伯努利分布(两点分布、0-1分布)

                属于离散型概率分布

                伯努利分布公式:

                        

                伯努利实验 —— 例如抛硬币。

        二项式分布和多项式分布

                二项式分布:伯努利实验重复n次。

                n = 1的二项式分布就是伯努利分布。

                多项式分布:抛硬币改为掷骰子。

        伯努利朴素贝叶斯:每个特征都服从伯努利分布的一种贝叶斯分类器

                适用于二分类离散变量。

                特征的条件概率服从伯努利分布:

                        

                        xi 表示第 i 哥特征维度,y 表示观测道德类别。

                特征可选值大于两个时可用多项式分布。

                

2.3.2、 高斯朴素贝叶斯

        


2.4、分类器效果对比

from sklearn.datasets import load_iris

iris = load_iris()
X = iris.data
y = iris.target
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
from sklearn.naive_bayes import BernoulliNB
nb = BernoulliNB()
nb.fit(X_train, y_train)
nb.score(X_test, y_test)
0.23684210526315788
print(iris.DESCR)
.. _iris_dataset:

Iris plants dataset
--------------------

**Data Set Characteristics:**

    :Number of Instances: 150 (50 in each of three classes)
    :Number of Attributes: 4 numeric, predictive attributes and the class
    :Attribute Information:
        - sepal length in cm
        - sepal width in cm
        - petal length in cm
        - petal width in cm
        - class:
                - Iris-Setosa
                - Iris-Versicolour
                - Iris-Virginica
                
    :Summary Statistics:

    ============== ==== ==== ======= ===== ====================
                    Min  Max   Mean    SD   Class Correlation
    ============== ==== ==== ======= ===== ====================
    sepal length:   4.3  7.9   5.84   0.83    0.7826
    sepal width:    2.0  4.4   3.05   0.43   -0.4194
    petal length:   1.0  6.9   3.76   1.76    0.9490  (high!)
    petal width:    0.1  2.5   1.20   0.76    0.9565  (high!)
    ============== ==== ==== ======= ===== ====================

    :Missing Attribute Values: None
    :Class Distribution: 33.3% for each of 3 classes.
    :Creator: R.A. Fisher
    :Donor: Michael Marshall (MARSHALL%PLU@io.arc.nasa.gov)
    :Date: July, 1988

The famous Iris database, first used by Sir R.A. Fisher. The dataset is taken
from Fisher's paper. Note that it's the same as in R, but not as in the UCI
Machine Learning Repository, which has two wrong data points.

This is perhaps the best known database to be found in the
pattern recognition literature.  Fisher's paper is a classic in the field and
is referenced frequently to this day.  (See Duda & Hart, for example.)  The
data set contains 3 classes of 50 instances each, where each class refers to a
type of iris plant.  One class is linearly separable from the other 2; the
latter are NOT linearly separable from each other.

.. topic:: References

   - Fisher, R.A. "The use of multiple measurements in taxonomic problems"
     Annual Eugenics, 7, Part II, 179-188 (1936); also in "Contributions to
     Mathematical Statistics" (John Wiley, NY, 1950).
   - Duda, R.O., & Hart, P.E. (1973) Pattern Classification and Scene Analysis.
     (Q327.D83) John Wiley & Sons.  ISBN 0-471-22361-1.  See page 218.
   - Dasarathy, B.V. (1980) "Nosing Around the Neighborhood: A New System
     Structure and Classification Rule for Recognition in Partially Exposed
     Environments".  IEEE Transactions on Pattern Analysis and Machine
     Intelligence, Vol. PAMI-2, No. 1, 67-71.
   - Gates, G.W. (1972) "The Reduced Nearest Neighbor Rule".  IEEE Transactions
     on Information Theory, May 1972, 431-433.
   - See also: 1988 MLC Proceedings, 54-64.  Cheeseman et al"s AUTOCLASS II
     conceptual clustering system finds 3 classes in the data.
   - Many, many more ...
from sklearn.naive_bayes import GaussianNB
nb = GaussianNB()
nb.fit(X_train, y_train)
nb.score(X_test, y_test)
1.0
from sklearn.naive_bayes import CategoricalNB
nb = CategoricalNB()
nb.fit(X_train, y_train)
nb.score(X_test, y_test)
0.8947368421052632
from sklearn.naive_bayes import MultinomialNB
nb = MultinomialNB()
nb.fit(X_train, y_train)
nb.score(X_test, y_test)
0.5789473684210527
from sklearn.naive_bayes import ComplementNB
nb = ComplementNB()
nb.fit(X_train, y_train)
nb.score(X_test, y_test)
0.5789473684210527


2.5、多项式朴素贝叶斯代码实现

        

纯文本数据不能直接传入模型,需要进行特征抽取。

Chapter-10/10-6 多项式朴素贝叶斯代码实现.ipynb · 梗直哥/Machine-Learning - Gitee.com


3、优缺点和使用条件

朴素贝叶斯优点

        过程简单速度快。

        对多分类问题言样有效。

        分布独立假设下效果好。

        贝叶斯思想光芒万丈,先验打开“扇大门。(拓展 变分)

朴素贝叶斯缺点

        条件独立假设在现实中往往很难保证。

        只适用于简单比大小问题。

        如果个别类别概率为0,则预测失败。(平滑技术解决)。

        条件概率和先验分布计算复杂度较高,高维计算困难。

适用条件

        文本分类/垃圾文本过滤/情感判别。

        多分类实时预测。

        推荐系统、与 协同过滤 一起。

        复杂问题建模。

         


参考

 Machine-Learning: 《机器学习必修课:经典算法与Python实战》配套代码 - Gitee.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/258268.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

英码科技受邀参加2023计算产业生态大会,分享智慧轨道交通创新解决方案

12月13-14日,“凝心聚力,共赢计算新时代”——2023计算产业生态大会在北京香格里拉饭店成功举办。英码科技受邀参加行业数字化分论坛活动,市场总监李甘来先生现场发表了题为《AI哨兵,为铁路安全运营站好第一道岗》的精彩主题演讲&…

PIL/Pillow

Abstract PIL(Python Imaging Library)是一个用于图像处理的 Python 库。它提供了广泛的功能,包括图像加载、保存、调整大小、裁剪、旋转、滤镜应用等。 由于 PIL 的开发停止在 2009 年,因此推荐使用其后续的维护版本 Pillow。Pillow 是一个兼容 PIL 接…

Vue3+el-table实现甘特图

Vue3 el-table实现甘特图效果 代码gitee 整体实现效果如下 进度列,可以通过设置天或小时,切换不同列显示类型。 涉及到的问题 1、通过Worker解决js线程堵塞问题 在根据时间动态生成列时,由于开始时间与结束时间跨度过大时,计…

【从服务器获取共享列表失败】【无法与设备或资源通信】解决方案!

【从服务器获取共享列表失败】背景: 某项目搭建有samba共享,使用一段时间后,不知何种原因,客户端链接共享时报:从服务器获取共享列表失败,无效的参数。 可参考解决方案A: 银河麒麟samba共享文…

vue3 环境变量

开发环境&#xff1a; .env.development VITE_HTTPhttp://www.baidu.com生成环境&#xff1a; .env.production VITE_HTTPhttp://www.jd.com获取环境里的值 <template></template><script setup lang"ts"> console.log(import.meta.env); <…

图片处理软件DxO PhotoLab 6 mac高级工具

DxO PhotoLab 6 mac是一款专业的RAW图片处理软件&#xff0c;适用于Mac操作系统。它具有先进的图像处理技术和直观易用的界面&#xff0c;可帮助用户轻松地将RAW格式的照片转换为高质量的JPEG或TIFF图像。 DxO PhotoLab 6支持多种相机品牌的RAW格式&#xff0c;包括佳能、尼康、…

【docker】数据管理

Docker容器会随时关闭和开启,Docker 容器的数据放哪里呢&#xff1f; 答案就是&#xff1a;数据卷和数据卷容器 官网文档 Manage data in Docker | Docker Docs 数据卷(Data Volume) 数据卷就是将宿主机的某个目录&#xff0c;映射到容器中&#xff0c;作为数据存储的目录&…

21 3GPP中 5G NR高速列车通信标准化

文章目录 信道模型实验——物理层设计相关元素μ(与子载波间隔有关)设计参考信号(DMRS) 本文提出初始接入、移动性管理、线性小区设计等高层技术。描述3GPP采用HST场景的评估参数&#xff0c;阐释了HST应用的物理层技术&#xff0c;包括数字通信和参考信号设计&#xff0c;链路…

基于PHP的蛋糕购物商城系统

有需要请加文章底部Q哦 可远程调试 基于PHP的蛋糕购物商城系统 一 介绍 此蛋糕购物商城基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈&#xff1a;phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销…

【大数据存储与处理】实验四 MongoDB 文档操作

实验四 MongoDB 文档操作 【实验目的】&#xff1a; 1. 掌握 MongoDB CRUD 基本操作&#xff1b; 2. 掌握 MongoDB 插入文档 3. 掌握 MongoDB 更新文档 4. 掌握 MongoDB 删除文档 5. 掌握 MongoDB 删除集合。 【实验内容与要求】&#xff1a; MongoDB 是一个介于关系数…

深入理解PyTorch中的Hook机制:特征可视化的重要工具与实践

文章目录 一、前言1. 特征可视化的重要性2. PyTorch中的hook机制简介 二、Hook函数概述1. Tensor级别的hook&#xff1a;register_hook()2. Module级别的hook 三、register_forward_hook()详解1. 功能与使用场景2. 示例代码与解释3. 在特征可视化中的具体应用 四、register_bac…

HarmonyOS播放视频及音乐

效果如下 代码 Entry Component struct PageVideo {State videoSrc: Resource $rawfile(AndroidVideo.mp4)State previewUri: Resource $rawfile(6_20231218171028A068.jpg)State curRate: PlaybackSpeed PlaybackSpeed.Speed_Forward_1_00_XState isAutoPlay: boolean fal…

js按顺序循环接口返回数据,组合成新数据

有时候我们需要根据一个参数&#xff0c;通过接口返回的数据进行一一对应。形成请求参数又有对应的返回结果的新数据。 新数据格式1&#xff1a;一个对象包含请求参数和返回值 现在vue项目里有个字典接口&#xff0c;该页面很多地方要调用字典接口&#xff0c;需要写个循环将…

IIOT与IOT:什么是工业物联网?为什么需要工业物联网?

工业物联网也被称作工业4.0或工业互联网&#xff0c;是物联网的一个子集&#xff0c;其通过通信技术连接的众多工业设备组成的网络&#xff0c;使系统能够以前所未有的方式监控、收集、交换、分析和提供有价值的新见解&#xff0c;以帮助工业企业做出更智能、更快速的业务决策。…

告诉你playwright 不使用with sync_playwright() as编写脚本的新方法

大家都知道playwright代码的标准写法是&#xff1a; with sync_playwright() as p:browser p.chromium.launch(channel"chrome", headlessFalse)page browser.new_page()page.goto("http://www.baidu.com")print(page.title())browser.close() with sy…

解决ESP8266无法退出透传问题以及获取网络时间以及天气方法

网上很多配置ESP8266的教程&#xff0c;但是遇到无法退出透传模式的情况却没有找得到答案&#xff0c;不知道是大家都没遇到还是怎么样&#xff0c;以下是我的解决方法&#xff1a;实测有效 先发送“”&#xff08;三个加号&#xff09;&#xff08;如果是在串口调试助手调试&…

硕迪填报如何自动生成UUID并存入数据库

硕迪填报如何自动生成UUID并存入数据库 需求&#xff1a;1、在不修改jsp页面的情况下&#xff0c;如何生成一个UUID并存入数据库&#xff1f; 2、修改数据时&#xff0c;根据UUID去更新数据。 现在我总结一个更简洁的方法&#xff0c;具体操作步骤如下&#xff1a; 1、填报表…

SpringBoot知识点回顾01

Spring是为了解决企业级应用开发的复杂性而创建的&#xff0c;简化开发。 Spring是如何简化Java开发的 为了降低Java开发的复杂性&#xff0c;Spring采用了以下4种关键策略&#xff1a; 1、基于POJO的轻量级和最小侵入性编程&#xff0c;所有东西都是bean&#xff1b; 2、通…

WebGL开发虚拟旅游应用

WebGL可以用于开发虚拟旅游应用&#xff0c;提供用户在浏览器中探索虚拟景点和环境的交互体验。以下是在WebGL中开发虚拟旅游应用的一般流程&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.需求分析…

Sqoop入门:如何下载、配置和使用

下载和配置 Sqoop是Apache的一个开源工具&#xff0c;主要用于在Hadoop和关系数据库之间传输数据。以下是一些关于如何下载和配置Sqoop的步骤&#xff1a; 下载Sqoop&#xff1a;你可以从Apache的官方网站下载Sqoop。大多数企业使用的Sqoop版本是Sqoop1&#xff0c;例如sqoop-…