def optimize_log(p0, data, model_func, sel_dist, theta, lower_bound=None,
upper_bound=None, verbose=0, flush_delay=0.5, epsilon=1e-3,
gtol=1e-5, multinom=False, maxiter=None, full_output=False,
func_args=[], func_kwargs={}, fixed_params=None, ll_scale=1,
output_file=None):
if output_file:
output_stream = file(output_file, 'w')
else:
output_stream = sys.stdout
args = (data, model_func, sel_dist, theta, lower_bound, upper_bound,
verbose, multinom, flush_delay, func_args, func_kwargs,
fixed_params, ll_scale, output_stream)
p0 = Inference._project_params_down(p0, fixed_params)
outputs = scipy.optimize.fmin_bfgs(_object_func_log,
numpy.log(p0), epsilon=epsilon,
args = args, gtol=gtol,
full_output=True,
disp=False,
maxiter=maxiter)
xopt, fopt, gopt, Bopt, func_calls, grad_calls, warnflag = outputs
xopt = Inference._project_params_up(numpy.exp(xopt), fixed_params)
if output_file:
output_stream.close()
if not full_output:
return [-fopt, xopt]
else:
return xopt, fopt, gopt, Bopt, func_calls, grad_calls, warnflag
评论列表
文章目录