当前位置: 首页 > news >正文

Python空间地表联动贝叶斯地震风险计算模型

🎯要点

  1. 使用贝叶斯推断模型兼顾路径和场地效应,量化传统地理统计曲线拟合技术。
  2. 使用破裂和场地特征等地质信息以及事件间残差和事件内残差描述数学模型
  3. 模型使用欧几里得距离度量、角距离度量和土壤差异性度量
  4. 确定贝叶斯先验分布和后验分布参数,评估模型性能
    在这里插入图片描述
    在这里插入图片描述

🍇Python高斯过程

高斯过程是机器学习工具箱中的一个强大工具。它们使我们能够通过结合先验知识对数据进行预测。它们最明显的应用领域是用函数拟合数据。这称为回归,例如,用于机器人技术或时间序列预测。但高斯过程不仅限于回归——它们还可以扩展到分类和聚类任务。对于给定的一组训练点,可能有无数个函数可以拟合数据。高斯过程通过为每个函数分配一个概率为这个问题提供了一个优雅的解决方案。这个概率分布的平均值代表了数据最可能的特征。此外,使用概率方法我们可以将预测的置信度合并到回归结果中。

首先,我们将从连续视图转向函数的离散表示:我们感兴趣的不是寻找隐式函数,而是预测具体点处的函数值,我们将其称为测试点 X X X。那么,我们如何从迄今为止考虑过的多元正态分布中推导出这种函数视图呢?随机过程(例如高斯过程)本质上是一组随机变量。此外,这些随机变量中的每一个都有相应的索引 i i i。我们将使用此索引来指代我们的 n n n 维多元分布的第 i i i 维。

现在,高斯过程的目标是从训练数据中学习这种底层分布。相对于测试数据 X X X,我们将训练数据表示为 Y Y Y。高斯过程的关键思想是将 X X X 的底层分布与 Y Y Y 一起建模为多元正态分布。这意味着联合概率分布 P X , Y P_{X, Y} PX,Y 跨越了我们想要预测的函数的可能函数值空间。请注意,测试和训练数据的联合分布具有 ∣ X ∣ + ∣ Y ∣ |X|+|Y| X+Y 维度。

为了对训练数据进行回归分析,我们将这个问题视为贝叶斯推理。贝叶斯推理的基本思想是随着新信息的出现而更新当前假设。在高斯过程的情况下,此信息是训练数据。因此,我们感兴趣的是条件概率 P X ∣ Y P_{X \mid Y} PXY。最后,我们回想一下,高斯分布在条件下是封闭的——因此 P X ∣ Y P_{X \mid Y} PXY 也是正态分布的。

现在我们已经了解了高斯过程的基本框架,只剩下一件事:如何建立这个分布并定义平均值 μ \mu μ 和协方差矩阵 Σ \Sigma Σ ?协方差矩阵 Σ \Sigma Σ 由其协方差函数 k k k 确定,后者通常也称为高斯过程的核。

在高斯过程中,我们将每个测试点视为一个随机变量。多元高斯分布的维数与随机变量的维数相同。由于我们想要预测 ∣ X ∣ = N |X|=N X=N 个测试点处的函数值,因此相应的多元高斯分布也是 N N N 维的。使用高斯过程进行预测最终归结为从该分布中抽取样本。然后,我们将结果向量的第 i i i 个分量解释为与第 i i i 个测试点相对应的函数值。

高斯模型

p ( x ∣ π , Σ ) = ( 2 π ) − k / 2 ∣ Σ ∣ − 1 / 2 exp ⁡ { − 1 2 ( x − μ ) ′ Σ − 1 ( x − μ ) } p(x \mid \pi, \Sigma)=(2 \pi)^{-k / 2}|\Sigma|^{-1 / 2} \exp \left\{-\frac{1}{2}(x-\mu)^{\prime} \Sigma^{-1}(x-\mu)\right\} p(xπ,Σ)=(2π)k/2∣Σ1/2exp{21(xμ)Σ1(xμ)}

这样做似乎没有任何好处,因为正态分布本身并不是特别灵活的分布。然而,采用一组高斯分布(多元正态向量)有许多好处。首先,多元正态分布中任何元素子集的边际分布也是正态的:
p ( x , y ) = N ( [ μ x μ y ] , [ Σ x Σ x y Σ x y T Σ y ] ) p ( x ) = ∫ p ( x , y ) d y = N ( μ x , Σ x ) \begin{gathered} p(x, y)= N \left(\left[\begin{array}{l} \mu_x \\ \mu_y \end{array}\right],\left[\begin{array}{cc} \Sigma_x & \Sigma_{x y} \\ \Sigma_{x y}^T & \Sigma_y \end{array}\right]\right) \\ p(x)=\int p(x, y) d y= N \left(\mu_x, \Sigma_x\right) \end{gathered} p(x,y)=N([μxμy],[ΣxΣxyTΣxyΣy])p(x)=p(x,y)dy=N(μx,Σx)
此外,多元正态分布元素子集的条件分布(取决于剩余元素)也是正态的:
p ( x ∣ y ) = N ( μ x + Σ x y Σ y − 1 ( y − μ y ) , Σ x − Σ x y Σ y − 1 Σ x y T ) p(x \mid y)= N \left(\mu_x+\Sigma_{x y} \Sigma_y^{-1}\left(y-\mu_y\right), \Sigma_x-\Sigma x y \Sigma_y^{-1} \Sigma x y^T\right) p(xy)=N(μx+ΣxyΣy1(yμy),ΣxΣxyΣy1ΣxyT)
高斯过程将多元正态推广到无限维度。它被定义为随机变量的无限集合,任何边缘子集都具有高斯分布。因此,边缘化属性在其定义中是明确的。另一种思考无限向量的方式是将其视为函数。当我们编写一个以连续值作为输入的函数时,我们本质上是在暗示一个无限向量,它只在调用该函数时返回值(由输入索引)。同样,这种以函数表示的无限维高斯概念使我们能够以计算方式处理它们:我们永远不需要存储高斯过程的所有元素,只需根据需要计算它们即可。

从高斯过程采样
import numpy as np
def exponential_cov(x, y, params):return params[0] * np.exp( -0.5 * params[1] * np.subtract.outer(x, y)**2)

我们将利用多变量高斯分布的条件性质,逐点顺序生成实现。条件如下:
p ( x ∣ y ) = N ( μ x + Σ x y Σ y − 1 ( y − μ y ) , Σ x − Σ x y Σ y − 1 Σ x y T ) p(x \mid y)= N \left(\mu_x+\Sigma_{x y} \Sigma_y^{-1}\left(y-\mu_y\right), \Sigma_x-\Sigma x y \Sigma_y^{-1} \Sigma x y^T\right) p(xy)=N(μx+ΣxyΣy1(yμy),ΣxΣxyΣy1ΣxyT)
这是实现它的函数:

def conditional(x_new, x, y, params):B = exponential_cov(x_new, x, params)C = exponential_cov(x, x, params)A = exponential_cov(x_new, x_new, params)mu = np.linalg.inv(C).dot(B.T).T.dot(y)sigma = A - B.dot(np.linalg.inv(C).dot(B.T))return(mu.squeeze(), sigma.squeeze())

我们将从高斯过程开始,其超参数为 σ − 0 = 1 , σ − 1 = 10 \sigma_{-} 0=1, \sigma_{-} 1=10 σ0=1,σ1=10。我们还将假设零函数为平均值,因此我们可以绘制一个表示平均值一个标准差的带。

import matplotlib.pylab as plt
θ = [1, 10]
σ_0 = exponential_cov(0, 0, θ)
xpts = np.arange(-3, 3, step=0.01)
plt.errorbar(xpts, np.zeros(len(xpts)), yerr=σ_0, capsize=0)

让我们选择一个任意的起点进行采样,比如 x=1。由于没有先前的点,我们可以从无条件高斯中采样:

x = [1.]
y = [np.random.normal(scale=σ_0)]
print(y)

[0.4967141530112327]

现在,我们可以更新我们的置信带,给出我们刚刚采样的点,使用协方差函数生成新的逐点区间,条件是值 [ x 0 , y 0 x_0, y_0 x0,y0]。

def predict(x, data, kernel, params, sigma, t):k = [kernel(x, y, params) for y in data]Sinv = np.linalg.inv(sigma)y_pred = np.dot(k, Sinv).dot(t)sigma_new = kernel(x, x, params) - np.dot(k, Sinv).dot(k)return y_pred, sigma_newx_pred = np.linspace(-3, 3, 1000)
predictions = [predict(i, x, exponential_cov, θ, σ_1, y) for i in x_pred]
y_pred, sigmas = np.transpose(predictions)
plt.errorbar(x_pred, y_pred, yerr=sigmas, capsize=0)
plt.plot(x, y, "ro")

因此,基于这一点以及我们指定的协方差结构,我们基本上限制了其他点的可能位置。现在让我们再取样一下:

m, s = conditional([-0.7], x, y, θ)
y2 = np.random.normal(m, s)
print(y2)

-0.1382640378102619

该点被添加到实现中,并可用于进一步更新下一个点的位置。

x.append(-0.7)
y.append(y2)
σ_2 = exponential_cov(x, x, θ)
predictions = [predict(i, x, exponential_cov, θ, σ_2, y) for i in x_pred]
y_pred, sigmas = np.transpose(predictions)
plt.errorbar(x_pred, y_pred, yerr=sigmas, capsize=0)
plt.plot(x, y, "ro")

👉参阅、更新:计算思维 | 亚图跨际

相关文章:

Python空间地表联动贝叶斯地震风险计算模型

🎯要点 使用贝叶斯推断模型兼顾路径和场地效应,量化传统地理统计曲线拟合技术。使用破裂和场地特征等地质信息以及事件间残差和事件内残差描述数学模型模型使用欧几里得距离度量、角距离度量和土壤差异性度量确定贝叶斯先验分布和后验分布参数&#xff…...

虚幻引擎-设置UI自适应屏幕大小

在游戏中,如果想实现不同分辨率下,都可以支持当前的UI界面布局,都需要用到锚点功能。 ‌虚幻引擎中的UI锚点(Anchor)是指控件在屏幕或父物体上的固定点,用于确定控件的位置和布局。‌ 锚点的作用是确保UI元…...

C++继承的三种方式[ACCESS]

C继承的定义 两个类的继承关系在派生类中声明,派生类定义使用以下语法: class DerivedClass: [ACCESS] BaseClass{ /…/ }; 冒号(:)后的[ACCESS]是继承的最高权限级别符,可以是以下三个值(存取权限级别&am…...

idea 同一个项目不同模块如何设置不同的jdk版本

在IntelliJ IDEA中,可以为同一个项目中的不同模块设置不同的JDK版本。这样做可以让你在同一个项目中同时使用多个Java版本,这对于需要兼容多个Java版本的开发非常有用。以下是设置步骤: 打开项目设置: 在IDEA中,打开你…...

1-仙灵之谜(区块链游戏详情介绍)

1-仙灵之谜(区块链游戏详情介绍) 前言(该游戏仅供娱乐)正文 前言(该游戏仅供娱乐) 依稀记得本科那会儿参加了一个区块链实验室,那时每周末大家都会爬山或者抽出一下午讨论区块链以及未来&#x…...

基于51单片机的温湿度上下限监测预警proteus仿真

地址:https://pan.baidu.com/s/1hSprWBYhKKx8Txzaj33YPA?pwdjp3d 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C52/AT89C51是一款经典的8位单片机,是意法半导体(STMic…...

考核总结.

事件循环 单线程的js在处理异步事件时进行的一种循环过程。 在 JS中任务分为同步与异步任务,其中异步任务又分为两种:宏任务和 微任务。宏任务和微任务的执行顺序:总方针是先同步再异步,异步中先微任务,在宏任务。一次…...

后端学习路线

后端学习路线 一、编程语言 至少需要学习一门编程语言,建议学习JAVA和GO语言。 二、数据库 数据库分为关系型数据库和非关系型数据库,区别在于分关系型数据库常用于大数据,而非关系型数据库一般不在大数据方面使用。 关系型数据库&#x…...

车辆重识别(注意力 U-Net:学习在哪些区域寻找胰腺)论文阅读2024/10/01

什么是注意力机制? 什么是加性注意力? 大致说一下流程: 对于一张特征图来说,对于这张图中的每一个像素向量(例如a),计算该向量与所有像素向量的相似度,对这些相似度进行激活函数…...

【区别】git restore --staged <文件> 和 git reset HEAD <文件> 都可以用于取消已暂存的文件

git restore --staged <文件> 和 git reset HEAD <文件> 都可以用于取消已暂存的文件&#xff0c;但它们的工作原理和适用场景有所不同。以下是对这两个命令的详细比较&#xff1a; 1. 命令概述 git restore --staged <文件>&#xff1a; 专门用于将指定文件…...

void类型

编程语言中的void类型是一种特殊的数据类型&#xff0c;它表示不存在任何值。void, 无或者空类型。大部分编程语言支持void, 用做函数无返回值类型。最早ALGOL 68引入void类型。 void的特别使用 经典C缺乏void类型&#xff0c;函数可以不指定返回值&#xff0c;默认是整型int.…...

10/1 力扣 49.字母异位词分组

基本知识&#xff1a; 关于字符串的排序&#xff1a; 1.多个字符串排序 1.1使用python内置的sorted() 使用该函数后原对象并不发生变化 1.2若多个字符串使用列表进行存储&#xff0c;使用列表的sort()方法 使用该函数后原对象原地变化 2.对单个字符串里的字母进行排序 使…...

✨机器学习笔记(六)—— ReLU、多分类问题、Softmax、Adam、反向传播

Course2-Week2: https://github.com/kaieye/2022-Machine-Learning-Specialization/tree/main/Advanced%20Learning%20Algorithms/week2机器学习笔记&#xff08;六&#xff09; 1️⃣ReLU&#xff08;Rectified Linear Unit&#xff09;2️⃣多分类问题3️⃣Softmax4️⃣Adam5…...

Xshell7下载及服务器连接

一、Xshell-7.0.0164p、Xftp 7下载 1.1、文件下载 通过网盘分享的文件&#xff1a;xshell 链接: https://pan.baidu.com/s/1qc0CPv4Hkl19hI9tyvYZkQ 提取码: 5snq –来自百度网盘超级会员v2的分享 1.2、ip连接 下shell和xftp操作一样&#xff1a;找到文件—》新建—》名称随…...

SQL Server—的数据类型

SQL Server—的数据类型 在 SQL Server 数据库中&#xff0c;数据类型是定义数据模型的基础&#xff0c;它们决定了数据在数据库中的存储方式和格式。正确选择数据类型不仅可以优化存储空间&#xff0c;还能提高查询性能和数据完整性。 1文本类型 文本类型&#xff1a;字符数…...

WaterCloud:一套基于.NET 8.0 + LayUI的快速开发框架,完全开源免费!

前言 今天大姚给大家分享一套基于.NET 8.0 LayUI的快速开发框架&#xff0c;项目完全开源、免费&#xff08;MIT License&#xff09;且开箱即用&#xff1a;WaterCloud。 可完全实现二次开发让开发更多关注业务逻辑。既能快速提高开发效率&#xff0c;帮助公司节省人力成本&…...

数据结构-LRU缓存(C语言实现)

遇到困难&#xff0c;不必慌张&#xff0c;正是成长的时候&#xff0c;耐心一点&#xff01; 目录 前言一、题目介绍二、实现过程2.1 实现原理2.2 实现思路2.2.1 双向链表2.2.2 散列表 2.3 代码实现2.3.1 结构定义2.3.2 双向链表操作实现2.3.3 实现散列表的操作2.3.4 内存释放代…...

javacv FFmpegFrameGrabber 阻塞重连解决方法汇总

JavaCV中FrameGrabber类可以连接直播流地址, 进行解码, 获取Frame帧信息, 常用方式如下 FrameGrabber grabber new FrameGrabber("rtsp:/192.168.0.0"); while(true) {Frame frame grabber.grabImage();// ... } 在如上代码中, 若连接地址网络不通, 或者连接超时…...

自然语言处理问答系统技术

自然语言处理问答系统技术 随着人工智能的不断发展&#xff0c;自然语言处理&#xff08;NLP&#xff09;技术已成为推动智能问答系统发展的核心技术。问答系统是利用NLP来解析用户提出的问题&#xff0c;并从知识库中找到最相关的答案。在许多应用中&#xff0c;如智能客服、…...

交换机和路由器的区别

交换机和路由器的区别主要体现在以下几个方面&#xff1a; 工作层次不同&#xff1a;交换机通常工作在OSI模型的数据链路层&#xff08;第二层&#xff09;&#xff0c;主要根据MAC地址进行数据包转发。而路由器则工作在OSI模型的网络层&#xff08;第三层&#xff09;&#xf…...

使用 llama.cpp + MTP 分支实现 1.5 倍 Token 输出加速实战指南

使用 llama.cpp MTP 分支实现 1.5 倍 Token 输出加速实战指南 摘要&#xff1a;本文详细介绍如何通过 llama.cpp 的 MTP&#xff08;Multi-Token Prediction&#xff09;PR 分支&#xff0c;配合 Qwen3.6-27B-MTP GGUF 量化模型&#xff0c;实现推理时每秒输出 token 数量翻倍…...

imFile下载管理器:从入门到精通的免费全能下载解决方案

imFile下载管理器&#xff1a;从入门到精通的免费全能下载解决方案 【免费下载链接】imfile-desktop A full-featured download manager. 项目地址: https://gitcode.com/gh_mirrors/im/imfile-desktop imFile是一款功能全面的免费下载管理器&#xff0c;支持HTTP、FTP、…...

APK安装器终极指南:在Windows上轻松安装安卓应用的5个简单步骤

APK安装器终极指南&#xff1a;在Windows上轻松安装安卓应用的5个简单步骤 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否想在Windows电脑上直接运行安卓应用&a…...

硬核架构拆解:指纹浏览器底座+FSM状态机,如何重塑高容错的店群RPA自动化?

大家好&#xff0c;我是林焱&#xff0c;一名专注电商底层自动化架构与定制开发的独立开发者。 在 CSDN 以及各大技术社区&#xff0c;我看到很多开发者在尝试为拼多多、TEMU 等电商平台编写自动化脚本时&#xff0c;都会经历一个“崩溃期”&#xff1a;明明在本地测试时无比丝…...

告别调参焦虑!用Matlab Regression Learner App快速搞定你的第一个回归模型(附三维曲面拟合实战)

告别调参焦虑&#xff01;用Matlab Regression Learner App快速搞定你的第一个回归模型&#xff08;附三维曲面拟合实战&#xff09; 在科研和工程领域&#xff0c;数据建模是绕不开的核心技能。但传统建模流程往往令人望而生畏&#xff1a;从数据清洗到特征工程&#xff0c;从…...

FPGA生成SPWM的另一种思路:抛弃ROM,用DDS IP核与CORDIC算法实时生成正弦波

FPGA实时生成SPWM&#xff1a;基于DDS IP核与CORDIC算法的高效实现方案 在电力电子和电机控制领域&#xff0c;SPWM&#xff08;正弦脉宽调制&#xff09;技术因其优异的谐波特性和高效率而广受青睐。传统FPGA实现方案通常采用预存波形数据的ROM方法&#xff0c;虽然实现简单&a…...

Wireshark解密不止于IPSec:一份TLS/SSL、HTTPS、SSH等常见加密协议的解密指南

Wireshark解密不止于IPSec&#xff1a;一份TLS/SSL、HTTPS、SSH等常见加密协议的解密指南 当你面对一个加密的网络流量时&#xff0c;是否曾感到无从下手&#xff1f;无论是调试HTTPS API调用、分析SSH连接问题&#xff0c;还是研究QUIC协议的行为&#xff0c;加密流量总是像一…...

【AI智能体】OpenClaw 本地 数字员工 Windows 快速搭建方法

OpenClaw&#xff08;小龙虾&#xff09;是一款备受开发者关注的开源本地 AI 智能体&#xff0c;凭借本地运行、零代码操作、自动执行电脑任务等特点快速普及。它不只是对话 AI&#xff0c;更是能够直接操控系统的自动化工具&#xff0c;可根据自然语言指令完成任务拆解、工具调…...

巧用历史版本溯源法,化解R包依赖链安装难题

1. 为什么R包安装总是报错&#xff1f;从依赖链说起 每次看到RStudio里跳出一串红色报错信息&#xff0c;我就知道又要开始"解谜"了。特别是当你想装个ggplot2画个图&#xff0c;结果提示rlang版本不对&#xff1b;升级rlang后又发现pillar不兼容...这种连环套问题&a…...

PonyAgent 试用笔记:当 LangGraph 太重、Dify 太黑盒,中小企业的第三条路,一个很实用的智能体框架

PonyAgent 试用笔记&#xff1a;当 LangGraph 太重、Dify 太黑盒&#xff0c;中小企业的第三条路 TL;DR&#xff1a;PonyAgent 是一个用 Python 写的极简智能体框架&#xff0c;单文件入口、.env 一处配置、Redis 挂了能自动降级到内存模式。我用 5 分钟在 Windows 上把它跑了起…...