python 高斯过程_高斯过程后验(Python)

本文介绍如何使用Python实现高斯过程的先验分布,并通过加入观测数据计算后验分布。首先展示创建平均值为0的联合高斯先验的代码,然后探讨在引入观测数据后如何更新分布,包括计算K_train、K_prior、K_pt等关键矩阵。尽管作者在理解和实现过程中遇到困难,但提供了尝试解决的步骤和相关资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我使用下面的代码创建并采样了平均值为0的联合高斯先验值:import numpy as np

import matplotlib.pyplot as plt

from math import pi

from scipy.spatial.distance import cdist

import scipy.stats as sts

x_prior = np.linspace(-10,10,101)

x_prior = x_prior.reshape(-1,1)

mu = np.zeros(x_prior.shape)

#defining the Kernel for the covariance function

def sec(a,b, length_scale , sigma) :

K = sigma * np.exp(-1/(2*length_scale) * cdist(a,b)**2)

return K

#defining the Gaussian Process prior

def GP(a , b, mu , kernel , length_scale, sigma , samples ) :

f = np.random.multivariate_normal(mu.flatten(), kernel(a ,b , length_scale , sigma ) , samples)

return f

prior = GP(x_prior ,x_prior, mu , sec , 100, 1 , 5)

plt.figure()

plt.grid()

plt.title('samples from the Gaussian prior')

plt.plot(x_prior , prior.T)

plt.show()

w5Yim.png

然后,当加入一些“观察到的”数据时,我希望计算这些点的后验值,但这正是我陷入困境的地方。在

以下是我引入新数据的代码:

^{pr2}$

用新的数据计算出我的x分布,并用新的数据来解释。在

那么,您是否希望通过对平均值进行某种更改以包含新的y值,从而在变为后验之前更新多元变量?在

我使用了以下资源来尝试:

但我真的在努力理解每一个阶段都会发生什么,为什么,这样当我做不到的时候,我就知道我是怎么做到的。在

以下是我一直在尝试实施的一些解决方案,但迄今为止没有任何效果:K_train = sec(x_train , x_train , 1,1)

K_prior = sec(x_prior , x_prior , 1,1)

K_pt = sec(x_prior , x_train , 1,1)

K_tp = sec(x_train , x_prior , 1,1) ## = k_tp transpose

prior = sts.multivariate_normal(mu.flatten(), K_prior)

#mean_test = np.dot(K_p , np.linalg.inv(K_prior))

mean_function = np.dot(np.dot(K_tp ,np.linalg.inv(K_prior).T) , prior )

covariance_function = K_train - np.dot(np.dot(K_tp ,np.linalg.inv(K_prior).T) , K_pt)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值