Python贝叶斯推理和概率规划

news/2024/5/19 3:29:38 标签: python, 数学, 概率规划, 贝叶斯, 推理, 算法

贝叶斯概率规划

贝叶斯策略在以下情况下特别有用:

  • 您对未知模型参数或有关数据生成的明确信息有先验信念 - 即您想要合并的有用信息。
  • 运行学习算法后,我们对参数有了更新的信念——即参数的新分布。
  • 您想要捕获结果的不确定性(模型的确定性或不确定性),而不仅仅是一个“最佳”结果。

贝叶斯学习应用于数据较少且不确定性量化至关重要的各种行业环境,包括营销、广告、医疗产品开发、药物统计、药物发现和开发、技术招聘和计算机系统 A/B测试和调参。

概率规划是一种编程范式,使用计算机科学工具来执行统计建模 。概率规划语言用于构建可以执行以下任务的系统:

  • 自然语言理解
  • 计算机视觉
  • 机器人
  • 机器学习

概率规划语言非常适合原型设计和试验不同的模型类型。它们使表达概率模型变得容易。概率规划应用如:

  • 预测股票价格
  • 推荐电影
  • 诊断计算机
  • 解决金融、医药、制造等领域的问题

贝叶斯

模型

有两个决定性特征:

  • 未知量使用概率分布进行描述。 我们称这些数量为参数
  • 贝叶斯定理用于更新以数据为条件的参数值。 我们还可以将这个过程视为概率的重新分配

为了举例,我们假设我们不知道如何计算后验,因此我们将 Metropolis-Hastings 算法实现到 Python 代码中以获得近似答案。 我们将借助 SciPy 统计函数来完成此操作:

python">def post(θ, Y, α=1, β=1):
    if 0 <= θ <= 1:
        prior = stats.beta(α, β).pdf(θ)
        like  = stats.bernoulli(θ).pmf(Y).prod()
        prob = like * prior
    else:
        prob = -np.inf
    return prob

我们还需要数据,因此我们将为此目的生成一些随机的假数据。

python">Y = stats.bernoulli(0.7).rvs(20)

最后我们运行 Metropolis-Hastings 算法的实现:

python"> n_iters = 1000
 can_sd = 0.05
 α = β =  1
 θ = 0.5
 trace = {"θ":np.zeros(n_iters)}
 p2 = post(θ, Y, α, β)
 
 for iter in range(n_iters):
     θ_can = stats.norm(θ, can_sd).rvs(1)
    p1 = post(θ_can, Y, α, β)
    pa = p1 / p2

    if pa > stats.uniform(0, 1).rvs(1):
        θ = θ_can
        p2 = p1

    trace["θ"][iter] = θ

探索性分析

概率规划

特征样条曲线

时间序列

贝叶斯加性回归树

逼近贝叶斯计算

概率规划

源代码

参阅 1 - 亚图跨际
参阅 2 - 亚图跨际


http://www.niftyadmin.cn/n/5254325.html

相关文章

怎么下载python并安装3.8.2,怎么下载python3.6并安装

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;怎么下载python3.9.6并安装&#xff0c;怎么下载python并安装3.9.0&#xff0c;今天让我们一起来看看吧&#xff01; 一、进入Python官网首页&#xff0c;下载最新的Python版本 官网&#xff1a;Download Python | Pyth…

Java基础——对象类型转换(向上、向下转型)

非继承关系的类之间对象类型不可以互相类型转换&#xff0c;只有继承关系才可以互相转换。 简单说&#xff0c;对象类型转换的前提要是继承关系。 对象类型转换分为&#xff1a;向上转型和向下转型。多态就是一种自动向上转型。 向上转型&#xff1a;子类对象用父类类型接收…

机器学习-分类问题

前言 《机器学习-回归问题》知道了回归问题的处理方式,分类问题才是机器学习的重点.从数据角度讲,回归问题可以转换为分类问题的微分 逻辑回归 逻辑回归&#xff08;Logistics Regression&#xff09;,逻辑回归虽然带有回归字样&#xff0c;但是逻辑回归属于分类算法。但只可…

OWASP Web 安全测试指南 WSTG

Eoin Keary的前言 软件不安全的问题可能是我们这个时代最重要的技术挑战。支持业务、社交网络等的 Web 应用程序的急剧兴起只会加剧建立一种强大的方法来编写和保护我们的 Internet、Web 应用程序和数据的要求。 在开放 Web 应用程序安全项目 &#xff08;OWASP&#xff09; 中…

InputStream和OutputStream速通

InputStream和OutputStream 输入流&#xff08;InputStream&#xff09;&#xff1a; InputStream是抽象类&#xff0c;用于从各种数据源&#xff08;如文件、网络连接、内存等&#xff09;读取字节流。常见的子类包括FileInputStream、ByteArrayInputStream和SocketInputStrea…

NVMe over Fabrics with SPDK with iRDMA总结 - 3

6.0 Configure and Test NVMe over Fabrics Host(s) to Connect to SPDK Target配置和测试 NVMe over Fabrics 主机以连接 SPDK 目标机 The SPDK NVMe-oF target system is spec compliant, which allows for the use of either an SPDK host or Linux Kernel host to co…

前端知识(十一)———js判断上传的文件是GBK编码还是UTF-8

1、获取文件二进制数据&#xff0c;这里只做示例&#xff0c;例如element-ui中文件上传的beforeUpload方法&#xff0c;返回的file对象&#xff0c;然后使用FileReader对其进行转换&#xff0c;再进行后续判断 function beforeUpload(file: File) { const reader new FileRe…

在浏览器中存储数组和对象(js的问题)

有时候在使用 JavaScript 的时候&#xff0c;开发者可能会想使用 "localStorage" 来方便地存储数据。但一个常见的错误是试图按原样把数组和对象存到 "localStorage" 里。"localStorage" 只接受字符串。 为了存储对象&#xff0c;JavaScript 会…