lambda式
Pythonの「ラムダ文」が難しいww
import scipy.optimize as op
def lnprob(theta, ell_data, bee_data):
lp = lnprior(theta)
if not np.isfinite(lp):
return -np.inf
return lp + lnlike(theta, ell_data, bee_data)
theta=[5.05, 250., -200., 1.1] #探索するパラメータの初期値。
minus_lnprob = lambda theta,*args: -lnprob(theta,*args)
result = op.minimize(minus_lnprob, theta, args=(ell_data, bee_data), method='TNC', bounds=bnds, options={'maxiter': 10000,'xtol': 1e-6, 'ftol':1e-6})
print(result)
print(result["x"])
試行錯誤の末、上記に辿り着き、なんとかうまく行ったが、理解できないww
minus_lnprob = lambda theta,*args: -lnprob(theta,*args)
の部分は
def minus_lnprob(theta, ell_data, bee_data):
return -lnprob(theta, ell_data, bee_data)
と同値のようである。