pymc3 安装以及测试代码

本文详细描述了一位初学者在配置Bayesianinference环境,尤其是使用PyMC3时遇到的问题,包括版本不匹配、C++库错误、BLAS警告等,并提供了相应的解决方案,如安装m2w64-toolchain和mingwlibpython,以及调整Theano设置。
摘要由CSDN通过智能技术生成

小白想学习Bayesian inference, 在配环境的地方卡了四五天。搜集各种教程终于配好了,现在记录步骤如下。

(跑是能跑的,只知道报错很多是版本不匹配的问题,但是其中具体原因我也不是很清楚,希望有大佬能指点一下~多谢)

1. 创建环境

conda create -n bayesian python==3.8
conda activate bayesian

2. pip 安装 pym3

pip install pymc3==3.11.5

3. 此时运行会报c++ 的错误(一堆),运行下面两个命令

conda install m2w64-toolchain
conda install mingw libpython

4.如果出现这个警告:

WARNING (theano.tensor.blas): Using NumPy C-API based implementation for BLAS functions.

执行以下命令


conda install mkl
conda install mkl-service
conda install blas

然后在 C:\Users\用户名 下新建文件,命名为 .theanorc.txt ,写入保存

[blas]
Idflags=-lmkl_rt

5. 测试代码

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

np.random.seed(123)

alpha = 1
sigma = 1
beta = [1, 2.5]

N = 100

X1 = np.random.randn(N)
X2 = np.random.randn(N)

Y = alpha + beta[0] * X1 + beta[1] * X2 + np.random.randn(N) * sigma

fig1, ax1 = plt.subplots(1, 2, figsize=(10, 4))
ax1[0].scatter(X1, Y)
ax1[0].set_xlabel('X1')
ax1[0].set_ylabel('Y')
ax1[1].scatter(X2, Y)
ax1[1].set_xlabel('X2')
ax1[1].set_ylabel('Y')

fig2 = plt.figure(2)
ax2 = Axes3D(fig2)
ax2.scatter(X1, X2, Y)
ax2.set_xlabel('X1')
ax2.set_ylabel('X2')
ax2.set_zlabel('Y')

import pymc3 as pm

basic_model = pm.Model()
with basic_model:
    alpha = pm.Normal('alpha', mu=0, sd=10)
    beta = pm.Normal('beta', mu=0, sd=10, shape=2)
    sigma = pm.HalfNormal('sigma', sd=1)

    mu = alpha + beta[0] * X1 + beta[1] * X2

    Y_obs = pm.Normal('Y_obs', mu=mu, sd=sigma, observed=Y)
map_estimate = pm.find_MAP(model=basic_model)
from scipy import optimize

map_estimate2 = pm.find_MAP(model=basic_model)
print(map_estimate)
print(map_estimate2)

6. 运行结果依然有一堆警告但是anyway了

参考:

关于这个例子的教程:PyMC3 概率编程入门

BLAS 的 WARNING

使用pymc3可能遇到的问题及解决方法

Anaconda 安装 theano填坑

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值