标签: pymc3

Theano步骤使文件格式错误

我试图复制示例 入门PyMC3.

在Windows 2012 R2上.

这一步 from pymc3 import Model, Normal, HalfNormal
给出了

D:\Anaconda3\libs/python35.lib: error adding symbols: File in wrong format
collect2.exe: error: ld returned 1 exit status

    ---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
D:\Anaconda3\lib\site-packages\theano\gof\lazylinker_c.py in <module>()
     64         if version != getattr(lazylinker_ext, '_version', None):
---> 65             raise ImportError()
     66 except ImportError:

ImportError: 

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last)
D:\Anaconda3\lib\site-packages\theano\gof\lazylinker_c.py in <module>()
     81             if version != getattr(lazylinker_ext, '_version', None):
---> …
Run Code Online (Sandbox Code Playgroud)

python gcc theano pymc3

3
推荐指数
1
解决办法
1841
查看次数

什么是pm.Normal.dist.logp?

我正在阅读黑客的概率编程和贝叶斯方法.在Ch5中,写的是logp = pm.Normal.dist(mu=price_estimate, sd=(3e3)).logp(true_price).

这是什么?我知道,pm.Normal()但不知道.dist().logp().

python statistics bayesian pymc3

3
推荐指数
1
解决办法
367
查看次数

有没有办法增加分配给jupyter笔记本的内存

我使用的是python3.6

当我尝试在 pymc3 中运行 NUTS 采样时,我的 jupyter 笔记本一次又一次崩溃。

我的笔记本电脑有 16gb 和 i7 我认为应该足够了。我在 8GB 和 i7 笔记本电脑上运行了相同的代码,当时它有效。无法弄清楚这个问题是什么。

我已经使用此命令生成了 jupyter 的配置文件

$ jupyter notebook --generate-config
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚需要修改哪个参数来解决这个问题。

这是我正在使用的代码

with pm.Model() as model:
#hyperpriors
home = pm.Flat('home') #flat pdf is uninformative - means we have no idea
sd_att = pm.HalfStudentT('sd_att', nu=3, sd=2.5)
sd_def = pm.HalfStudentT('sd_def', nu=3, sd=2.5)
intercept = pm.Flat('intercept')

# team-specific model parameters
atts_star = pm.Normal("atts_star", mu=0, sd=sd_att, shape=num_teams)
defs_star = pm.Normal("defs_star", mu=0, sd=sd_def, shape=num_teams)

# To allow samples of expressions to …
Run Code Online (Sandbox Code Playgroud)

python pymc3 jupyter-notebook

3
推荐指数
1
解决办法
2万
查看次数

试图按照PyMC3上的教程,它来到:"'模型'对象没有属性TransformedVar"

我一直在尝试按照PYMC3上的教程https://pymc-devs.github.io/pymc3/getting_started/,但是当我看到以下代码部分时,我遇到了错误......

from pymc3 import Exponential, T, logtransform, exp, Deterministic
from pymc3.distributions.timeseries import GaussianRandomWalk


with Model() as sp500_model:

    nu = Exponential('nu', 1./10, testval=.1)

    sigma, log_sigma = sp500_model.TransformedVar('sigma', Exponential.dist(1./.02, testval=.1),
                                        logtransform)

    s = GaussianRandomWalk('s', sigma**-2, shape=n)

    volatility_process = Deterministic('volatility_process', exp(-2*s))

    r = T('r', nu, lam=volatility_process, observed=returns)
Run Code Online (Sandbox Code Playgroud)

第一个错误是"无法导入名称logtransform".第二个错误(如果我不尝试加载logtransform)是"'模型'对象没有属性TransformedVar".

我在Windows 7上的IPython Notebook中运行它,我尝试卸载并重新安装PyMC3无济于事.

python pymc3 jupyter-notebook

2
推荐指数
1
解决办法
1223
查看次数

如何使用Pymc3模拟有偏见的6面骰子?

如何使用Pymc3模拟6面骰子卷?另外,我知道骰子的不同侧面有不同的分布吗?

python bayesian pymc3

2
推荐指数
1
解决办法
441
查看次数

userWarning pymc3:重新参数化是什么意思?

我使用 DensityDist 分布构建了一个 pymc3 模型。我有四个参数,其中 3 个使用 Metropolis,一个使用 NUTS(这是由 pymc3 自动选择的)。但是,我得到两个不同的 UserWarnings 1.Chain 0 在调整后包含发散样本的数量。如果增加target_accept无济于事,请尝试重新参数化。我可以知道这里重新参数化是什么意思吗?2.链0中的接受概率与目标不匹配。它是 ,但应该接近 0.8。尝试增加调整步骤的数量。

通过一些例子,我使用了“random_seed”、“discard_tuned_samples”、“step = pm.NUTS(target_accept=0.95)”等等,并摆脱了这些用户警告。但是我找不到有关如何确定这些参数值的详细信息。我相信这可能已经在各种上下文中讨论过,但我无法找到可靠的文档。我正在做一个试错法,如下所示。

with patten_study: #SEED = 61290425 #51290425 step = pm.NUTS(target_accept=0.95) trace = sample(step = step)#4000,tune = 10000,step =step,discard_tuned_samples=False)#,random_seed=SEED)

我需要在不同的数据集上运行这些。因此,我正在努力为我使用的每个数据集修复这些参数值。有什么方法可以让我给出这些值或找到结果(如果有任何用户警告,然后尝试其他值)并在循环中运行它?

如果我问一些愚蠢的事情,请原谅我!

user-warning pymc3

2
推荐指数
1
解决办法
1576
查看次数

如何在windows10上解决漂白== 1.5.0 html5lib = 0.9999999

您好我想在Windows上的tensorflow版本3.5中安装pymc3

但它没有奏效.

pip install git+https://github.com/pymc-devs/pymc3
Run Code Online (Sandbox Code Playgroud)

tensorflow-tensorboard 1.5.0有要求漂白== 1.5.0,但你会有漂白2.1.2这是不兼容的.tensorflow-tensorboard 1.5.0有html5lib == 0.9999999的要求,但是你的html5lib 1.0.1是不兼容的

请帮我 :( 错误

pymc3 windows-10 tensorflow

2
推荐指数
1
解决办法
2640
查看次数

在此逻辑回归示例中,为什么Pymc3 ADVI比MCMC更差?

我知道ADVI / MCMC之间的数学差异,但是我试图理解使用其中一种的实际含义。我对以这种方式创建的数据运行一个非常简单的logistic回归示例:

import pandas as pd
import pymc3 as pm
import matplotlib.pyplot as plt
import numpy as np

def logistic(x, b, noise=None):
    L = x.T.dot(b)
    if noise is not None:
        L = L+noise
    return 1/(1+np.exp(-L))

x1 = np.linspace(-10., 10, 10000)
x2 = np.linspace(0., 20, 10000)
bias = np.ones(len(x1))
X = np.vstack([x1,x2,bias]) # Add intercept
B =  [-10., 2., 1.] # Sigmoid params for X + intercept

# Noisy mean
pnoisy = logistic(X, B, noise=np.random.normal(loc=0., scale=0., size=len(x1)))
# dichotomize pnoisy …
Run Code Online (Sandbox Code Playgroud)

logistic-regression pymc3

2
推荐指数
1
解决办法
255
查看次数

使用新的观察数据更新 PyMC3 上的模型

去年我测量了 80 个水果的直径,在检查了这些值的最佳分布之后,我创建了一个 PyMC3 模型

with Model() as diam_model:
    mu = Normal('mu',mu=57,sd=5.42)
    sigma = Uniform('sigma',0,10)
Run Code Online (Sandbox Code Playgroud)

之后,据我所知,我已经用我之前的数据(80 个值)“训练”了模型

with diam_model:
    dist = Normal('dist',mu=mu,sd=sigma, observed=prior_data.values)

with diam_model:
    samples=fit().sample(1000)
Run Code Online (Sandbox Code Playgroud)

然后我用plot_posteriorsamples,也返回均值和HPD。

我的想法是今年再次测量使用贝叶斯更新以减少样本量。如何添加单个值并更新后验值,期望 HPD 越来越小?

python bayesian pymc3

2
推荐指数
1
解决办法
1562
查看次数

如何将坐标传递给 arviz / pymc3 函数 plot_posterior(类似于 xarray.Dataset.sel)

我正在 pymc3 中进行一些贝叶斯建模,并想使用 plot_posterior(来自 arviz 包)绘制后验分布。结果图在水平轴上笨拙地错位,我想将它移过来精确绘制在 -3 和 +3 之间。不幸的是,我无法确定应该传递给函数来指定它的内容。

arviz.plot_posterior 的文档指定参数“coords”具有定义“要绘制的 var_names 的坐标。传递给 Dataset.sel” 大概这是我需要指定水平轴范围的内容,但它没有告诉我期待什么样的价值。

我已经检查了 Dataset.sel 的文档,它指出它期望的第一个参数是“一个具有与标量、切片或刻度标签数组给出的维度和值相匹配的键的字典”。我对此的解释是,键是与变量名称匹配的字符串,而值是一些可迭代的刻度线结构。

我的变量名为“m”,由以下代码生成:

with pymc3.Model() as m1:
    m = pymc3.Normal('m', mu = 0, sigma = 1)
    obs = pymc3.Normal('obs', mu = m, sigma = 1, observed = numpy.random.randn(3))
    trace = pymc3.sample(1000, tune = 500, cores = 1)
Run Code Online (Sandbox Code Playgroud)

我对 plot_posterior 期望的猜测是:

plot_posterior(trace, coords = {'m': [-3.0, -2,0, -1,0, 0.0, 1.0, 2.0, 3.0]})
Run Code Online (Sandbox Code Playgroud)

它给了我错误“ValueError:维度或多索引级别 ['m'] 不存在”

大概我在正确的轨道上,但我无法挖掘出这个函数需要什么参数的更精确的定义。感谢您的任何帮助,您可以提供。

编辑:我已经研究出如何扩展轴本身(诀窍是 ax = mpl.pyplot.axes(xlim = (-3.0, 3.0)))但我仍然不知道如何扩展变量的绘图本身。

python pymc3 arviz

2
推荐指数
1
解决办法
982
查看次数