in orbit/forecaster/forecaster.py [0:0]
def fit(self, df, **kwargs):
"""Core process for fitting a model within a forecaster"""
estimator = self.estimator
model_name = self._model.get_model_name()
df = df.copy()
# default set and validation of input data frame
self._validate_training_df(df)
# extract standard training metadata
self._set_training_meta(df)
# customize module
self._model.set_dynamic_attributes(
df=df, training_meta=self.get_training_meta()
)
# based on the model and df, set training input
self.set_training_data_input()
# if model provide initial values, set it
self._model.set_init_values()
# estimator inputs
data_input = self.get_training_data_input()
init_values = self._model.get_init_values()
model_param_names = self._model.get_model_param_names()
# note that estimator will search for the .stan, .pyro model file based on the
# estimator type and model_name provided
_posterior_samples, training_metrics = estimator.fit(
model_name=model_name,
model_param_names=model_param_names,
data_input=data_input,
fitter=self._model.get_fitter(),
init_values=init_values,
**kwargs,
)
self._posterior_samples = _posterior_samples
self._training_metrics = training_metrics