in python/prophet/serialize.py [0:0]
def model_from_dict(model_dict):
"""Recreate a Prophet model from a dictionary.
Recreates models that were converted with model_to_dict.
Parameters
----------
model_dict: Dictionary containing model, created with model_to_dict.
Returns
-------
Prophet model.
"""
model = Prophet() # We will overwrite all attributes set in init anyway
# Simple types
for attribute in SIMPLE_ATTRIBUTES:
setattr(model, attribute, model_dict[attribute])
for attribute in PD_SERIES:
if model_dict[attribute] is None:
setattr(model, attribute, None)
else:
s = pd.read_json(StringIO(model_dict[attribute]), typ='series', orient='split')
if s.name == 'ds':
if len(s) == 0:
s = pd.to_datetime(s)
s = s.dt.tz_localize(None)
setattr(model, attribute, s)
for attribute in PD_TIMESTAMP:
setattr(model, attribute, pd.Timestamp.utcfromtimestamp(model_dict[attribute]))
for attribute in PD_TIMEDELTA:
setattr(model, attribute, pd.Timedelta(seconds=model_dict[attribute]))
for attribute in PD_DATAFRAME:
if model_dict[attribute] is None:
setattr(model, attribute, None)
else:
df = pd.read_json(StringIO(model_dict[attribute]), typ='frame', orient='table', convert_dates=['ds'])
if attribute == 'train_component_cols':
# Special handling because of named index column
df.columns.name = 'component'
df.index.name = 'col'
setattr(model, attribute, df)
for attribute in NP_ARRAY:
setattr(model, attribute, np.array(model_dict[attribute]))
for attribute in ORDEREDDICT:
key_list, unordered_dict = model_dict[attribute]
od = OrderedDict()
for key in key_list:
od[key] = unordered_dict[key]
setattr(model, attribute, od)
# Other attributes with special handling
# fit_kwargs
model.fit_kwargs = model_dict['fit_kwargs']
# Params (Dict[str, np.ndarray])
model.params = {k: np.array(v) for k, v in model_dict['params'].items()}
# Skipped attributes
model.stan_backend = None
model.stan_fit = None
return model