加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 开始使用PYMC进行线性回归

发布时间:2020-12-20 13:40:19 所属栏目:Python 来源:网络整理
导读:以为我开始关注这个例子: http://www.databozo.com/2014/01/17/Exploring_PyMC3.html 但是当我按照pymc 2.3精确地遵循这个例子时,我得到一个退出并告诉API已经改变了 UserWarning:不推荐使用MCMC()语法.请通过M = MCMC(输入)明确传入节点. ??‘不推荐使用M
以为我开始关注这个例子:
http://www.databozo.com/2014/01/17/Exploring_PyMC3.html

但是当我按照pymc 2.3精确地遵循这个例子时,我得到一个退出并告诉API已经改变了
UserWarning:不推荐使用MCMC()语法.请通过M = MCMC(输入)明确传入节点.
??‘不推荐使用MCMC()语法.请通过M = MCMC(输入)显式传递节点.’)但我不知道如何更改示例以准确提供模型函数以及如何处理’with’子句?

有问题的代码是:

%pylab inline
import scipy
import numpy as np
x = np.array(range(0,50))
y = np.random.uniform(low=0.0,high=40.0,size=200)
y = map((lambda a: a[0] + a[1]),zip(x,y))

import matplotlib.pyplot as plt
plt.scatter(x,y)

以上示例数据生成器工作正常

import pymc as pm
import numpy as np

trace = None
with pm.Model() as model:         <<<<<<indicated as the error line
    alpha = pm.Normal('alpha',mu=0,sd=20)
    beta = pm.Normal('beta',sd=20)
    sigma = pm.Uniform('sigma',lower=0,upper=20)

    y_est = alpha + beta * x

    likelihood = pm.Normal('y',mu=y_est,sd=sigma,observed=y)

    start = pm.find_MAP()
    step = pm.NUTS(state=start)
    trace = pm.sample(2000,step,start=start,progressbar=False)

    pm.traceplot(trace);

解决方法

软件包作者@fonnesbeck告诉我,我需要Github的开发版本3而不是pypi版本2.3.通过github安装,我很高兴.开源很棒!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读