安装PyMC报错

在使用 PyMC3 库构建一个贝叶斯模型时,我需要通过 MCMC 采样来推断这两个参数的后验分布,然后对环境配置以及系统导包安装部分进行了操作,最终解决了这个问题。

代码报错问题


源代码如下:

# 首先导入所需的库
import pymc as pm
import pandas as pd
import numpy as np
import arviz as az
import matplotlib.pyplot as plt

# step 1: 生成模拟数据
true_mean = 0
true_std = 1
samples = np.random.normal(true_mean, true_std, 1000)

# step 2: 使用 PyMC3 构建模型
with pm.Model() as model:
    # 定义先验分布
    mu = pm.Normal('mu', mu=0, sigma=10)
    sigma = pm.HalfNormal('sigma', sigma=1)
    # 观测数据的似然函数
    y = pm.Normal('y', mu=mu, sigma=sigma, observed=samples)

    # Step 3: 进行 MCMC 采样
    idata = pm.sample(1000, tune=500, return_inferencedata=True)

报错:
在这里插入图片描述

原因:未安装 PyMC库包

安装命令(加上清华源速度更快哦~):

!pip install pymc -i https://pypi.tuna.tsinghua.edu.cn/simple

安装完之后,重新运行:
在这里插入图片描述

可以看到什么库包导入有警告,这个不用管,然后继续运行,到了第三个代码块,出现了报错,报错截图和详情如下:
在这里插入图片描述

CompileError: Compilation failed (return status=1):
/usr/bin/g++ -shared -g -Wno-c++11-narrowing -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -march=cascadelake -mmmx -mno-3dnow -msse -msse2 -msse3 -mssse3 -mno-sse4a -mcx16 -msahf -mmovbe -maes -mno-sha -mpclmul -mpopcnt -mabm -mno-lwp -mfma -mno-fma4 -mno-xop -mbmi -mno-sgx -mbmi2 -mno-pconfig -mno-wbnoinvd -mno-tbm -mavx -mavx2 -msse4.2 -msse4.1 -mlzcnt -mrtm -mhle -mrdrnd -mf16c -mfsgsbase -mrdseed -mprfchw -madx -mfxsr -mxsave -mxsaveopt -mavx512f -mno-avx512er -mavx512cd -mno-avx512pf -mno-prefetchwt1 -mclflushopt -mxsavec -mxsaves -mavx512dq -mavx512bw -mavx512vl -mno-avx512ifma -mno-avx512vbmi -mno-avx5124fmaps -mno-avx5124vnniw -mclwb -mno-mwaitx -mno-clzero -mno-pku -mno-rdpid -mno-gfni -mno-shstk -mno-avx512vbmi2 -mavx512vnni -mno-vaes -mno-vpclmulqdq -mno-avx512bitalg -mno-avx512vpopcntdq -mno-movdiri -mno-movdir64b -mno-waitpkg -mno-cldemote -mno-ptwrite --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=36608 -mtune=cascadelake -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -m64 -fPIC -I/usr/local/lib/python3.11/dist-packages/numpy/core/include -I/usr/include/python3.11 -I/usr/local/lib/python3.11/dist-packages/pytensor/link/c/c_code -L/usr/lib/x86_64-linux-gnu -L/usr/lib -fvisibility=hidden -o /root/.pytensor/compiledir_Linux-4.19-el7.elrepo.x86_64-x86_64-with-glibc2.31-x86_64-3.11.2-64/lazylinker_ext/lazylinker_ext.so /root/.pytensor/compiledir_Linux-4.19-el7.elrepo.x86_64-x86_64-with-glibc2.31-x86_64-3.11.2-64/lazylinker_ext/mod.cpp -lpython3.11
In file included from /root/.pytensor/compiledir_Linux-4.19-el7.elrepo.x86_64-x86_64-with-glibc2.31-x86_64-3.11.2-64/lazylinker_ext/mod.cpp:1:
/usr/local/lib/python3.11/dist-packages/pytensor/link/c/c_code/pytensor_mod_helper.h:4:10: fatal error: Python.h: No such file or directory
    4 | #include <Python.h>
      |          ^~~~~~~~~~
compilation terminated.

好,到了这个时候,我们才算遇到了真正的问题,那么首先我们翻译了一下这段话大致是什么意思。
就是说在尝试编译PyTensor(Theano的一个分支)的C代码时,编译器找不到Python.h头文件。这个头文件在Python的开发包中。然后我使用的环境是Python 3.11,所以需要安装python3.11-dev。

因为我使用的是在一个Linux系统上,可以使用以下命令来安装它:

sudo apt-get install python3.11-dev

安装完之后跑代码,结果如下:
在这里插入图片描述

以上就是PyMC模块安装过程中会遇到的一个环境问题,可能是和其他库包版本不兼容,也可能是系统中未安装Python开发包。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值