Python中文
首页
教程
问答
标签
搜索
登录
注册
如何对PyMC中的变量应用自定义函数?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>在我写的模型的一个步骤中,我必须计算一个量的误差函数。我要做的是:</p> <pre><code>from math import erf import numpy as np import pymc as pm sig = pm.Exponential('sig', beta=0.1, size=10) x = erf(sig ** 2) </code></pre> <p>此操作失败,因为<code>erf</code>不适用于数组。我试过了:</p> ^{pr2}$ <p>但是没有成功,我知道有可能得到的结果是:</p> <pre><code>np_erf = np.vectorize(erf) x = np_erf((sig ** 2).value) </code></pre> <p>但这似乎不是正确的方法,因为它不产生<code>pm.Deterministic</code>,而只是一个<code>np.array</code>。我该怎么做呢?(PyMC是2.3版)</p> <hr/> <p><strong>编辑:</strong>为了清晰起见,上面的示例被简化了,下面是相关段落在实际代码中的外观。理想情况下,我希望这样做:</p> <pre><code>mu = pm.LinearCombination('mu', [...], [...]) sig2 = pm.exp(mu) ** 2 f = 1 / (pm.sqrt(np.pi * sig2 / 2.0) * erf(W / sig2)) </code></pre> <p>但如果失败,则返回消息<code>TypeError: only length-1 arrays can be converted to Python scalars</code>。走<code>np.vectorize</code>路线</p> <pre><code>np_erf = np.vectorize(erf) f = 1 / (pm.sqrt(np.pi * sig2 / 2.0) * np_erf(W / sig2)) </code></pre> <p>崩溃并显示相同的错误消息。列表理解</p> <pre><code>@pm.deterministic def f(sig2=sig2): return [1 / (pm.sqrt(np.pi * s / 2.0) * erf(W / s)) for s in sig2] </code></pre> <p>工作原理是这样的,但会导致代码稍后在此处出现错误:</p> <pre><code>@pm.observed(plot=True) def y(value=df['dist'], sig2=sig2, f=f): return (np.log(np.exp(-(value ** 2) / 2.0 / sig2) * f)).sum() </code></pre> <p>错误是<code>AttributeError: log</code>。在</p> <p>我用数值近似法计算了误差函数,这意味着一般的设置是正确的。直接使用<code>erf</code>函数会更好、更清晰。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>你所说的“没有成功”,到底是什么意思?错误是什么?在</p> <p>我注意到你在列表理解中没有把你的符号平方。这就是问题所在吗?在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
当用户用PYTHON设置一个或一个不带值的URL时,他们怎么能输入一个/a的代码呢?
2 回答
当用户登录到站点时,如何显示不同的导航栏
7 回答
当用户登录时,在Flask中向用户显示处理结果
3 回答
当用户的Flask会话结束时,我如何从Redis后端中移除所有Celery结果?
3 回答
当用户的Okta配置文件字段当前为blan时,更新该字段
1 回答
当用户的付款逾期2天时,从Django模型检索数据
2 回答
当用户的消息以问号结尾时,如何让机器人说些什么?
1 回答
当用户的系统上可能也安装了Python 2.7时,如何在用户的系统上运行Python 3脚本?
5 回答
当用户确定打印数量时,使用Matplotlib打印动画
2 回答
当用户离开时是否可以删除整个网页?
2 回答
当用户给出一个单词时如何打印?
4 回答
当用户继续更改TKin中的值(使用trace方法)时,使用Entry并更新输入的条目
2 回答
当用户编辑表单字段时,从Django时间字段中删除秒数
1 回答
当用户被更改时,消息不会来自web套接字
4 回答
当用户访问表单时,如何使表单为只读,而不具有更改权限
9 回答
当用户试图更改对象的值时,使用描述符类引发RuntimeError
4 回答
当用户调整GUI的大小时,是否有方法更改GUI内容的大小?
7 回答
当用户调整风的大小时,pythontkinter小部件的大小会不均匀
3 回答
当用户购买某个类别时,是否查找其他类别的销售?
9 回答
当用户转到上一页时,Django和芹菜插入操作
3 回答