leuschnm commited on
Commit
dc44445
·
1 Parent(s): f2ea1f4
Files changed (1) hide show
  1. app.py +12 -7
app.py CHANGED
@@ -54,23 +54,28 @@ def prepare_dataset(parameters, df, rain, temperature, datepicker):
54
  upperbound = datepicker + datetime.timedelta(days = 30)
55
 
56
  df = df.loc[(df["Date"].dt.date>lowerbound) & (df["Date"].dt.date<=upperbound)]
57
- dates = df["Date"]
58
 
59
  df = TimeSeriesDataSet.from_parameters(parameters, df)
60
- return df.to_dataloader(train=False, batch_size=256,num_workers = 0), dates
61
 
 
62
  def predict(model, dataloader):
63
  out = model.predict(dataloader, mode="raw", return_x=True, return_index=True)
64
  preds = raw_preds_to_df(out, quantiles = None)
65
- return preds[["Group", "pred"]]
 
 
 
 
66
 
67
 
68
- def generate_plot(df, dates, preds):
69
  fig, axs = plt.subplots(2, 2, figsize=(8, 6))
70
 
 
71
  # Plot scatter plots for each group
72
  axs[0, 0].scatter(df.loc[df['Group'] == '4', 'Date'], df.loc[df['Group'] == '4', 'sales'], color='grey', marker='o')
73
- axs[0, 0].plot(dates, preds.loc[preds['Group'] == '4', 'pred'], color = 'red')
74
  axs[0, 0].set_title('Article Group 1')
75
 
76
  axs[0, 1].scatter(df.loc[df['Group'] == '7', 'Date'], df.loc[df['Group'] == '7', 'sales'], color='blue', marker='o')
@@ -141,9 +146,9 @@ def main():
141
  datepicker = st.date_input("Start of Forecast", datetime.date(2022, 12, 24), min_value=datetime.date(2022, 6, 26) + datetime.timedelta(days = 35), max_value=datetime.date(2023, 6, 26) - datetime.timedelta(days = 30))
142
 
143
  if st.button("Forecast Sales", type="primary"):
144
- dataloader, dates = prepare_dataset(parameters, df, rain, temperature, datepicker)
145
  preds = predict(model, dataloader)
146
- generate_plot(df, dates, preds)
147
 
148
  if __name__ == '__main__':
149
  main()
 
54
  upperbound = datepicker + datetime.timedelta(days = 30)
55
 
56
  df = df.loc[(df["Date"].dt.date>lowerbound) & (df["Date"].dt.date<=upperbound)]
 
57
 
58
  df = TimeSeriesDataSet.from_parameters(parameters, df)
59
+ return df.to_dataloader(train=False, batch_size=256,num_workers = 0)
60
 
61
+ @st.cache_data
62
  def predict(model, dataloader):
63
  out = model.predict(dataloader, mode="raw", return_x=True, return_index=True)
64
  preds = raw_preds_to_df(out, quantiles = None)
65
+
66
+ date_list = [datepicker + datetime.timedelta(days=x) for x in range(30)]
67
+ preds["date_imputed"] = date_list
68
+
69
+ return preds[["date_imputed", "Group", "pred"]]
70
 
71
 
72
+ def generate_plot(df, preds):
73
  fig, axs = plt.subplots(2, 2, figsize=(8, 6))
74
 
75
+ df = pd.merge(df, pred, left_on='Date', right_on='date_imputed')
76
  # Plot scatter plots for each group
77
  axs[0, 0].scatter(df.loc[df['Group'] == '4', 'Date'], df.loc[df['Group'] == '4', 'sales'], color='grey', marker='o')
78
+ axs[0, 0].plot(df.loc[df['Group'] == '4', 'Date'], df.loc[df['Group'] == '4', 'pred'], color = 'red')
79
  axs[0, 0].set_title('Article Group 1')
80
 
81
  axs[0, 1].scatter(df.loc[df['Group'] == '7', 'Date'], df.loc[df['Group'] == '7', 'sales'], color='blue', marker='o')
 
146
  datepicker = st.date_input("Start of Forecast", datetime.date(2022, 12, 24), min_value=datetime.date(2022, 6, 26) + datetime.timedelta(days = 35), max_value=datetime.date(2023, 6, 26) - datetime.timedelta(days = 30))
147
 
148
  if st.button("Forecast Sales", type="primary"):
149
+ dataloader = prepare_dataset(parameters, df, rain, temperature, datepicker)
150
  preds = predict(model, dataloader)
151
+ generate_plot(df, preds)
152
 
153
  if __name__ == '__main__':
154
  main()