in python/prophet/models.py [0:0]
def fit(self, stan_init, stan_data, **kwargs):
(stan_init, stan_data) = self.prepare_data(stan_init, stan_data)
if 'inits' not in kwargs and 'init' in kwargs:
kwargs['inits'] = self.prepare_data(kwargs['init'], stan_data)[0]
args = dict(
data=stan_data,
inits=stan_init,
algorithm='Newton' if stan_data['T'] < 100 else 'LBFGS',
iter=int(1e4),
)
args.update(kwargs)
try:
self.stan_fit = self.model.optimize(**args)
except RuntimeError as e:
# Fall back on Newton
if self.newton_fallback and args['algorithm'] != 'Newton':
logger.warning(
'Optimization terminated abnormally. Falling back to Newton.'
)
args['algorithm'] = 'Newton'
self.stan_fit = self.model.optimize(**args)
else:
raise e
params = self.stan_to_dict_numpy(
self.stan_fit.column_names, self.stan_fit.optimized_params_np)
for par in params:
params[par] = params[par].reshape((1, -1))
return params