in sa-dsml-many-models/code/util/timeseries_utilities.py [0:0]
def _recursive_forecast(self, X):
"""
Apply the trained model resursively for out-of-sample predictions.
"""
X_fcst = X.sort_index(ascending=True)
if self.target_column_name not in X_fcst.columns:
X_fcst[self.target_column_name] = np.nan
forecasts = pd.Series(np.nan, index=X_fcst.index)
for fcst_date in X_fcst.index.get_level_values(self.time_column_name):
# Get predictions on an expanding window ending on the current forecast date
y_fcst = self.pipeline.predict(X_fcst[X_fcst.index <= fcst_date])
# Set the current forecast
forecasts.loc[fcst_date] = y_fcst.loc[fcst_date]
# Set the actual value to the forecast value so that lag features can be made on next iteration
X_fcst.loc[fcst_date, self.target_column_name] = y_fcst.loc[fcst_date]
return forecasts