(python)函数最小化,PyMC保留一个固定参数
大家好,所有PYTHON用户(尤其是PyMC用户) 问题:(python)函数最小化,PyMC保留一个固定参数,python,pymc,minimization,Python,Pymc,Minimization,大家好,所有PYTHON用户(尤其是PyMC用户) 问题: 我想使用MCMC执行函数最小化。我的函数L(恰好是a-logGaussian)有N个变量。我想在一个变量上循环并保持它固定,在剩余的N-1个自由变量上采样L。其目的是在其多维参数空间中沿一个特定方向构建L的“轮廓”。因此,am对N-1自由参数的后验分布不感兴趣,而是对N-1参数的样本和函数L的相应值感兴趣 我的实施(示意图-无MWE): 我也试过了 J = Uniform('r', lower=15, upper=18, value=J
我想使用MCMC执行函数最小化。我的函数L(恰好是a-logGaussian)有N个变量。我想在一个变量上循环并保持它固定,在剩余的N-1个自由变量上采样L。其目的是在其多维参数空间中沿一个特定方向构建L的“轮廓”。因此,am对N-1自由参数的后验分布不感兴趣,而是对N-1参数的样本和函数L的相应值感兴趣 我的实施(示意图-无MWE): 我也试过了
J = Uniform('r', lower=15, upper=18, value=J_array, observed=True)
@deterministic
def L(J=J, a=a, b=b, c=c, r=r):
return LL(J, a, b, c, r)
M = MCMC(L)
及
在所有情况下,LL
都是一个类的实例,该类有一个\uuuu调用\uuuu
方法,并且在所有情况下我都得到一个
TypeError: 'numpy.float64' object is not iterable
我对重复采样不感兴趣(因为我不关心后验概率)。在
M=MCMC(loglike)
之后,我只想以马尔可夫方式为每个J
抽取(比如)1000个变量值a,b,c,r
,对L(J | a,b,c,r)进行采样。从中,我将提取最小L值及其相应的参数
更新
代码的正确形式为:
def model(J):
a = Uniform('a', lower=0, upper=5)
b = Uniform('b', lower=0, upper=5)
c = Uniform('c', lower=0, upper=5)
r = Uniform('r', lower=0, upper=5)
@deterministic
def loglike(J=J, a=a, b=b, c=c, r=r):
return LL(a, b, J, r, c)
return locals()
for J in J_array:
M = MCMC(model(J))
这表明并非所有的pymc
变量的父变量都必须是pymc分布变量
我仍然不知道这是否是通过MCMC采样实现函数最小化的最聪明的方法。我想听听不同意或只是有建议的读者的评论。非常感谢所有用户
TypeError: 'numpy.float64' object is not iterable
def model(J):
a = Uniform('a', lower=0, upper=5)
b = Uniform('b', lower=0, upper=5)
c = Uniform('c', lower=0, upper=5)
r = Uniform('r', lower=0, upper=5)
@deterministic
def loglike(J=J, a=a, b=b, c=c, r=r):
return LL(a, b, J, r, c)
return locals()
for J in J_array:
M = MCMC(model(J))