高斯过程在python中的实现

stheno的Python项目详细描述


编号

build覆盖状态最新文档

sno是高斯过程建模在python中的一个实现。见 此外,还sedno.jl

20秒内非线性回归

>>>importnumpyasnp>>>fromsthenoimportGP,EQ>>>x=np.linspace(0,2,10)# Points to predict at>>>y=x**2# Observations>>>(GP(EQ())|(x,y))(3).mean# Go GP!array([[8.48258669]])
<莫尔?!那就继续读下去!

安装

在安装软件包之前,请确保gcc并且gfortran是 可用。 在OS X上,这两个程序都是用brew install gcc安装的; anaconda的用户可能会考虑安装gcc。 然后简单地

pip install stheno

手动

注意:这里的渲染得很好 文档的可读版本。

核心和平均设计

内核、平均值和GPS的输入,以下简称为输入, 必须是以下三种形式之一:

  • 如果输入x是秩为0的张量,即标量,则x指 单一输入位置。例如,0只是指唯一的输入 位置0

  • 如果输入x是秩1张量,则x的每个元素都是 解释为一个单独的输入位置。例如,np.linspace(0,1,10) 生成10个不同的输入位置,范围从01

  • 如果输入x是一个秩2张量,则x的每个行都是 解释为一个单独的输入位置。在这种情况下,输入是 多维,列对应于各种输入维度。

如果k是内核,比如说k=eq(),那么k(x,y)构造内核 矩阵用于xy之间的所有点对。k(x)k(x,x)。此外,k.elwise(x,y)构造了核向量对 xy元素中的点,这将是一个秩2列向量

示例:

>>>EQ()(np.linspace(0,1,3))array([[1.,0.8824969,0.60653066],[0.8824969,1.,0.8824969],[0.60653066,0.8824969,1.]])>>>EQ().elwise(np.linspace(0,1,3),0)array([[1.],[0.8824969],[0.60653066]])

最后,平均值函数输出a秩2列向量

可用内核

常数作为常数核函数。除此之外,下面的内核是 可用:

  • eq(),指数二次型:

    $$K(x,y)=\exp\left(-\frac{1}{2}x-y{^2\right);$$

  • rq(alpha),有理二次型:

    $$K(x,y)=左(1+\frac{x-y{^2}{2\alpha}\right)^{-\alpha};$$

  • exp()matern12(),指数内核:

    $$K(x,y)=\exp\left(x-y right);$$

  • matern32(),matern–3/2内核:

    $$K(x,y)=左( 1+\sqrt{3}x-y| \右)exp\left(-\sqrt{3}x-y右);$$

  • matern52(),matern–5/2内核:

    $$K(x,y)=左( 1+\sqrt{5}x-y+\frac{5}{3}x-y ^2 \右)exp\left(-\sqrt{3}x-y右);$$

  • delta(),kronecker delta内核:

    $$K(x,y)=\开始{cases} 1&;\text{if}x=y,,\ 0&;\text{否则}; \结束{cases}$$

  • 衰变内核(alpha,beta)

    $$K(x,y)=\frac{\beta ^\alpha}{x+y+\beta ^\alpha};$

  • tensorproductkernel(f)

    $$K(x,y)=f(x)f(y)。$/p>

    函数类型f添加到内核或与内核相乘将 自动将f转换为tensorproductkernel(f)。例如, f*k将转换为tensorproductkernel(f)*k,并且f+k将 转换为tensorproductkernel(f)+k

可用手段

常数作为常数的函数。除此之外,以下方法是 可用:

  • tensorproductmean(f)

    $$m(x)=f(x)。$/p>

    将a函数类型f添加或乘以平均意志 自动将f转换为tensorproductmean(f)。例如, f*m将转换为tensorproductmean(f)*m,并且f+m将 转体ate到tensorproductmean(f)+m

组合设计
  • 加减内核和平均值

    示例:

    啊!
  • 乘以内核,表示

    示例:

    啊!
  • 移位内核和平均值

    定义:

    啊!

    示例:

    啊!
  • 拉伸内核,表示

    定义:

    AAAAAAAAA 8

    示例:

    啊!

    >;运算符用于提供拉伸的速记:

    啊!
  • 选择内核的特定输入维度,表示

    定义:

    YYY11

    示例:

    是啊。
  • 转换内核和means的输入

    定义:

    啊!13!

    示例:

    AAAAAAA H14
  • 在数值上,但有效地,取核和平均值的导数。 这目前只适用于TensorFlow。

    定义:

    是啊。

    示例:

    啊!
  • 使内核周期性,但并不意味着

    定义:

    啊!

    示例:

    AAAAAAA 18
  • 反转内核的参数,但不表示

    定义:

    啊!

    示例:

    AAAAAAA H20
  • 分别从核和乘积中提取项和因子 意思是

    示例:

    AAAAAAAAA 21

    内核和意味着"包装"其他的可以通过索引"展开"k[0]m[0]

    示例:

    啊!

显示内核和意味着

内核和means有一个display方法。 display方法接受在打印任何值之前应用的可调用格式化程序。 当漂亮的打印内核或内核包含TensorFlow对象时,这非常有用。

示例:

AAAAAAAAA 23

内核的属性

内核的平稳性可以通过查询来确定 k.静止的。在许多情况下,方差k.var,长度标度 k.length/u scale和periodk.period也可以确定。

查询文具的示例:

啊!

查询差异的示例:

大花

查询长度刻度的示例:

啊!

查询时段的示例:

是啊。

车型设计

模型的基本构造块是agp(kernel,mean=0,graph=model), 它需要一个内核,还可以选择一个mean和一个图。 GPS可以组合成新的GPS,而图形是保持 所有这些物体的轨迹。 如果未指定图形,则新GPS将附加到提供的默认值 Graph模型,由编号导出:

AAAAAAAAA 28

下面是一个示例模型:

AAAAAAA 29

组合设计
  • 加减GPS和其他对象。

    示例:

    AAAAAAA 30
  • 将GPS乘以其他物体。

    示例:

    啊!
  • 移动GPS。

    示例:

    啊!
  • 伸展GPS。

    示例:

    是啊。

    >;运算符用于提供拉伸的速记:

    啊!
  • 选择特定的输入尺寸。

    示例:

    啊!

    实现索引是为了提供选择输入的速记 尺寸:

    啊!
  • 转换输入。

    示例:

    AAAAAAA 37
  • 用数值方法求gp的导数。 参数指定要对哪个维度求导 到

    示例:

    AAAAAAAAA 38
  • 构造gp导数的有限差分估计。 有关参数的说明,请参见"no.graph.graph.diff approx"。

    示例:

    啊!
  • 构造GPS集合的笛卡尔积。

    示例:

    啊!

显示GPS

像内核和means一样,gps也有一个接受格式化程序的显示方法。

示例:

>>>EQ()+Exp()EQ()+Exp()>>>EQ()+EQ()2*EQ()>>>EQ()+1EQ()+1>>>EQ()+0EQ()>>>EQ()-Exp()EQ()-Exp()>>>EQ()-EQ()0
1

GPS的特性

内核的属性可以直接在GPS上查询。

示例:

>>>EQ()+Exp()EQ()+Exp()>>>EQ()+EQ()2*EQ()>>>EQ()+1EQ()+1>>>EQ()+0EQ()>>>EQ()-Exp()EQ()-Exp()>>>EQ()-EQ()0
2

命名GPS

给全球定位系统起个名字是可能的。 名称必须是字符串。 然后,图形的行为就像GPS与其名称之间的双向字典。

示例:

>>>EQ()+Exp()EQ()+Exp()>>>EQ()+EQ()2*EQ()>>>EQ()+1EQ()+1>>>EQ()+0EQ()>>>EQ()-Exp()EQ()-Exp()>>>EQ()-EQ()0
3

有限维分布、推断和采样

只需调用gp来构造其有限维分布:

>>>EQ()+Exp()EQ()+Exp()>>>EQ()+EQ()2*EQ()>>>EQ()+1EQ()+1>>>EQ()+0EQ()>>>EQ()-Exp()EQ()-Exp()>>>EQ()-EQ()0
4

如果你想计算多次观察的证据, 然后可以使用graph.logpdf。

定义:

>>>EQ()+Exp()EQ()+Exp()>>>EQ()+EQ()2*EQ()>>>EQ()+1EQ()+1>>>EQ()+0EQ()>>>EQ()-Exp()EQ()-Exp()>>>EQ()-EQ()0
5

此外,使用f(x).marginals()有效地计算平均值和 95%中心可信域的上下界:

>>>EQ()+Exp()EQ()+Exp()>>>EQ()+EQ()2*EQ()>>>EQ()+1EQ()+1>>>EQ()+0EQ()>>>EQ()-Exp()EQ()-Exp()>>>EQ()-EQ()0
6

要根据观察结果设置条件,请使用graph.conditiongp.condition。 语法很像数学: 比较f1_reposteral=f1(f2(x),y)与$f_1,,f_2(x)=y$。

定义,其中f*g*g ps:

>>>EQ()+Exp()EQ()+Exp()>>>EQ()+EQ()2*EQ()>>>EQ()+1EQ()+1>>>EQ()+0EQ()>>>EQ()-Exp()EQ()-Exp()>>>EQ()-EQ()0
7

最后,graph.sample可用于从多个进程获取样本 联合:

>>>EQ()+Exp()EQ()+Exp()>>>EQ()+EQ()2*EQ()>>>EQ()+1EQ()+1>>>EQ()+0EQ()>>>EQ()-Exp()EQ()-Exp()>>>EQ()-EQ()0
8

诱导点

该算法支持后验分布的稀疏逼近。构建 稀疏近似,使用sparse obs而不是obs

定义:

>>>EQ()+Exp()EQ()+Exp()>>>EQ()+EQ()2*EQ()>>>EQ()+1EQ()+1>>>EQ()+0EQ()>>>EQ()-Exp()EQ()-Exp()>>>EQ()-EQ()0
9

sparseobs还将计算obs.elbo中elbo的值,可以是 优化以选择超参数和诱导点的位置。

纽比,张力流,还是火把?

你的选择!

>>>EQ()*Exp()EQ()*Exp()>>>2*EQ()2*EQ()>>>0*EQ()0
0
>>>EQ()*Exp()EQ()*Exp()>>>2*EQ()2*EQ()>>>0*EQ()0
1
>>>EQ()*Exp()EQ()*Exp()>>>2*EQ()2*EQ()>>>0*EQ()0
2

未讨论的功能

  • sNo.mokernelsNo.moman提供多输出内核和方法。

    示例:

    >>>EQ()*Exp()EQ()*Exp()>>>2*EQ()2*EQ()>>>0*EQ()0
    3
  • seno.eis在扩展的输入空间上提供内核,允许 以另一种灵活的方式设计内核。

    示例:

    >>>EQ()*Exp()EQ()*Exp()>>>2*EQ()2*EQ()>>>0*EQ()0
    4
  • sno.normal提供了对normal的有效实现 分布和一个方便的构造函数normal1d用于一维normal 分配。

  • sno.matrix提供矩阵的结构化表示和高效 相关操作。

  • 实现了gps之间的近似乘法。这是一个 实验功能。

    示例:

    >>>EQ()*Exp()EQ()*Exp()>>>2*EQ()2*EQ()>>>0*EQ()0
    5

示例

简单回归

预测

>>>EQ()*Exp()EQ()*Exp()>>>2*EQ()2*EQ()>>>0*EQ()0
6

预测分解

预测

>>>EQ()*Exp()EQ()*Exp()>>>2*EQ()2*EQ()>>>0*EQ()0
7

学习一个函数,结合有关其形式的先验知识

prediction

>>>EQ()*Exp()EQ()*Exp()>>>2*EQ()2*EQ()>>>0*EQ()0
8

多输出回归

prediction

>>>EQ()*Exp()EQ()*Exp()>>>2*EQ()2*EQ()>>>0*EQ()0
9

近似积分

prediction

k.shift(c)(x,y)==k(x-c,y-c)k.shift(c1,c2)(x,y)==k(x-c1,y-c2)
0

贝叶斯线性回归

预测k.shift(c)(x,y)==k(x-c,y-c)k.shift(c1,c2)(x,y)==k(x-c1,y-c2)1

gpar

prediction

k.shift(c)(x,y)==k(x-c,y-c)k.shift(c1,c2)(x,y)==k(x-c1,y-c2)
2

GP–RNN型号

预测k.shift(c)(x,y)==k(x-c,y-c)k.shift(c1,c2)(x,y)==k(x-c1,y-c2)3

GPS之间的近似乘法

predictionk.shift(c)(x,y)==k(x-c,y-c)k.shift(c1,c2)(x,y)==k(x-c1,y-c2)4

稀疏回归

预测k.shift(c)(x,y)==k(x-c,y-c)k.shift(c1,c2)(x,y)==k(x-c1,y-c2)5

用非参数基函数进行平滑

预测

k.shift(c)(x,y)==k(x-c,y-c)k.shift(c1,c2)(x,y)==k(x-c1,y-c2)
6

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java错误:无法找到或加载主类   Base85又名ASCI85 java项目   在Java oracle过程中创建Clob对象时引发AbstractMethodError   访问布尔Java时出现NullPointerException   在Java中压缩和解压缩字符串的调试程序   java了解JavaMail下未读消息的不同方法   java Vaadin 10网格样式基于内容的单个行   java使用Sparql查询识别实体的类别/分类   java如何在组件的设计阶段防止内存泄漏?   java使用共享首选项在应用程序上保存更改的语言   Spring数据jpa中具有复合PK的表的java本机查询   java复选框节点树