小能豆

安装和导入后,colaboratory 不会确认 arviz

py

在 Google 的合作实验室中,安装了 arviz 然后导入 arviz 时没有出现错误,但在代码单元中,pm.plot_posterior(samples) 出现错误:未安装 arviz。

尝试绘制贝叶斯代码

pm.plot_posterior(samples)

我期待一个情节


阅读 11

收藏
2024-11-17

共1个答案

小能豆

你的问题可能是由于 PyMC 和 ArviZ 的集成不正常导致的。尽管 ArviZ 安装正确,但在使用 PyMC 时,它可能没有正确关联或被识别。以下是可能的解决方案:


检查 ArviZ 和 PyMC 的版本兼容性

PyMC 依赖 ArviZ 来绘制后验分布。确保你安装的 PyMC 和 ArviZ 是兼容的:

  1. 检查已安装版本:
    ```py
    import arviz as az
    import pymc as pm

print(f”ArviZ version: {az.version}”)
print(f”PyMC version: {pm.version}”)
```

  1. 检查兼容版本【以 2024 年为准】:
  2. PyMC >= 4.0 需要 ArviZ >= 0.11.0。
  3. 使用最新版本的 PyMC 和 ArviZ 通常是最佳选择。

  4. 如果需要更新版本:
    sh !pip install --upgrade pymc arviz


强制导入 ArviZ

PyMC 需要显式导入 ArviZ。尝试在绘图代码之前加上以下行:

import arviz as az

如果问题仍然存在,可以设置 PyMC 使用 ArviZ 的配置:

pm.set_arviz_backend("arviz")

检查 samples 数据结构

确保 samples 是 ArviZ 支持的数据格式,比如 InferenceData 或可转换的 Pandas DataFrame、字典等。

如果 samples 是 PyMC 生成的 trace 数据,转换为 ArviZ 的 InferenceData 格式后再绘图:

inference_data = pm.sample_posterior_predictive(trace, model=model)
pm.plot_posterior(inference_data)

替代绘图方法

如果问题仍未解决,可以直接使用 ArviZ 绘制:

import arviz as az

# Assuming 'trace' is your PyMC sampling result
az.plot_posterior(samples)

验证环境

在 Google Colab 中,有时安装的库可能与预期的 Python 环境冲突,尤其是多个 PyMC 或 ArviZ 的版本共存。确保没有版本冲突:

  1. 重启 Colab 运行时以清除旧环境:
  2. 在菜单中选择 Runtime > Restart Runtime

  3. 确保安装了正确版本的库:
    sh !pip install pymc arviz --force-reinstall


完整工作流程

以下是一个完整的贝叶斯后验绘图示例:

import pymc as pm
import arviz as az

# 模型
with pm.Model() as model:
    # 定义先验
    alpha = pm.Normal("alpha", mu=0, sigma=1)
    beta = pm.Normal("beta", mu=0, sigma=1)

    # 假设数据
    x = [1, 2, 3]
    y_obs = [1, 2, 3]

    # 线性回归
    mu = alpha + beta * x
    sigma = pm.HalfNormal("sigma", sigma=1)
    y = pm.Normal("y", mu=mu, sigma=sigma, observed=y_obs)

    # 采样
    trace = pm.sample(1000, tune=1000, return_inferencedata=True)

# 后验绘图
az.plot_posterior(trace)

确保以上代码能正常运行。如果仍有问题,请提供具体错误信息,我会进一步协助你。

2024-11-17