gpt4 book ai didi

python - PyMC3 traceplot 不显示

转载 作者:太空狗 更新时间:2023-10-30 02:25:53 25 4
gpt4 key购买 nike

我正在尝试从 Osvaldo Martin 的 Bayesian Analysis with Python 中获取 PyMC3 示例。在 Windows 10 上,虽然以下使用 matplotlib 的代码工作正常(即显示图表):

import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats


def posterior_grid(grid_points=100, heads=6, tosses=9):
"""
A grid implementation for the coin-flip problem
"""
grid = np.linspace(0, 1, grid_points)
prior = 0.5 - abs(grid - 0.5)
likelihood = stats.binom.pmf(heads, tosses, grid)
unstd_posterior = likelihood * prior
posterior = unstd_posterior / unstd_posterior.sum()
return grid, posterior


if __name__ == "__main__":
points = 100
h, n = 1, 4
grid, posterior = posterior_grid(points, h, n)
plt.plot(grid, posterior, 'o-', label='heads = {}\ntosses = {}'.format(h, n))
plt.xlabel(r'$\theta$')
plt.legend(loc=0)
plt.show()

...我无法使用 PyMC3 的跟踪图来显示图表:

import pymc3 as pm
import numpy as np
import scipy.stats as stats

if __name__ == "__main__":

np.random.seed(123)
n_experiments = 4
theta_real = 0.35
data = stats.bernoulli.rvs(p=theta_real, size=n_experiments)
print(data)

with pm.Model() as our_first_model:
theta = pm.Beta('theta', alpha=1, beta=1)
y = pm.Bernoulli('y', p=theta, observed=data)
start = pm.find_MAP()
step = pm.Metropolis()
trace = pm.sample(1000, step=step, start=start)

burnin = 100
chain = trace[burnin:]
pm.traceplot(chain, lines={'theta':theta_real});

代码运行并退出正常,但没有显示图表。

我已经尝试在 IntelliJ IDEA 中使用 Python 插件,从根环境的 Anaconda 控制台窗口和 IPython。

在 IPython 中,我在控制台上得到以下输出:

Out[3]:
array([[<matplotlib.axes._subplots.AxesSubplot object at 0x0000024BDD622F60>,
<matplotlib.axes._subplots.AxesSubplot object at 0x0000024BDD667208>]], dtype=object)

...所以显然有事情发生了。但是如何将结果显示为图表?

我也用 Python 3.5 尝试了书中列出的确切库版本,但仍然没有 traceplot 图表:

  • Ipython 5.0
  • NumPy 1.11.1
  • SciPy 0.18.1
  • Pandas 0.18.1
  • Matplotlib 1.5.3
  • Seaborn 0.7.1
  • PyMC3 3.0

最佳答案

各种进一步的谷歌搜索让我得到以下答案。

使用 IPython,您必须调用 ipython --pylab auto 来为 matplotlib 提供合适的后端(至少在 Windows 上)。

使用IntelliJ IDEA/PyCharm,需要添加

import matplotlib.pyplot as plt

然后

plt.show()

traceplot 行之后显示绘图。

关于python - PyMC3 traceplot 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47388237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com