Spaces:
Runtime error
Runtime error
bug fix
Browse files
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)
|
| 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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 66 |
|
| 67 |
|
| 68 |
-
def generate_plot(df,
|
| 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(
|
| 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
|
| 145 |
preds = predict(model, dataloader)
|
| 146 |
-
generate_plot(df,
|
| 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()
|