IvanStudent commited on
Commit
ddde3e7
·
1 Parent(s): 8ae19a4

Guardar mis cambios locales

Browse files
Files changed (1) hide show
  1. app.py +34 -15
app.py CHANGED
@@ -5,21 +5,40 @@ import pickle
5
  import gradio as gr
6
 
7
  def load_model():
8
- with open('arima_sales_model.pkl', 'rb') as f:
9
- arima_model = pickle.load(f)
10
- return arima_model
 
 
 
11
 
12
  def forecast_sales(uploaded_file, forecast_period=30):
13
- df = pd.read_csv(uploaded_file)
14
- if 'Date' in df.columns and 'Sale' in df.columns:
 
 
 
 
 
 
 
 
 
 
15
  df['Date'] = pd.to_datetime(df['Date'])
16
  df = df.rename(columns={'Date': 'ds', 'Sale': 'y'})
17
 
18
- arima_model = load_model()
 
 
 
19
  forecast = arima_model.get_forecast(steps=forecast_period)
20
  forecast_index = pd.date_range(df['ds'].max(), periods=forecast_period + 1, freq='D')[1:]
21
  forecast_df = pd.DataFrame({'Date': forecast_index, 'Sales Forecast': forecast.predicted_mean})
22
-
 
 
 
23
  # Create the plot
24
  fig, ax = plt.subplots(figsize=(10, 6))
25
  ax.plot(df['ds'], df['y'], label='Historical Sales', color='blue')
@@ -28,19 +47,19 @@ def forecast_sales(uploaded_file, forecast_period=30):
28
  ax.set_ylabel('Sales')
29
  ax.set_title('Sales Forecasting with ARIMA')
30
  ax.legend()
31
- return fig
32
- else:
33
- return "The uploaded file must contain at least 'Date' and 'Sales' columns."
34
 
35
  def setup_interface():
36
  with gr.Blocks() as demo:
37
  gr.Markdown("## MLCast v1.1 - Intelligent Sales Forecasting System")
38
- with gr.Row():
39
- file_input = gr.File(label="Upload your store data here (must contain Date and Sales)")
40
- forecast_button = gr.Button("Forecast Sales")
41
  output_plot = gr.Plot()
42
- forecast_button.click(forecast_sales, inputs=[file_input], outputs=[output_plot])
43
-
 
44
  return demo
45
 
46
  if __name__ == "__main__":
 
5
  import gradio as gr
6
 
7
  def load_model():
8
+ try:
9
+ with open('arima_sales_model.pkl', 'rb') as f:
10
+ arima_model = pickle.load(f)
11
+ return arima_model
12
+ except Exception as e:
13
+ return None, f"Failed to load model: {str(e)}"
14
 
15
  def forecast_sales(uploaded_file, forecast_period=30):
16
+ if uploaded_file is None:
17
+ return "No file uploaded.", None
18
+
19
+ try:
20
+ df = pd.read_csv(uploaded_file)
21
+ except Exception as e:
22
+ return f"Failed to read the uploaded CSV file: {str(e)}", None
23
+
24
+ if 'Date' not in df.columns or 'Sale' not in df.columns:
25
+ return "The uploaded file must contain 'Date' and 'Sale' columns.", None
26
+
27
+ try:
28
  df['Date'] = pd.to_datetime(df['Date'])
29
  df = df.rename(columns={'Date': 'ds', 'Sale': 'y'})
30
 
31
+ arima_model, error = load_model()
32
+ if arima_model is None:
33
+ return error, None
34
+
35
  forecast = arima_model.get_forecast(steps=forecast_period)
36
  forecast_index = pd.date_range(df['ds'].max(), periods=forecast_period + 1, freq='D')[1:]
37
  forecast_df = pd.DataFrame({'Date': forecast_index, 'Sales Forecast': forecast.predicted_mean})
38
+ except Exception as e:
39
+ return f"Failed during forecasting: {str(e)}", None
40
+
41
+ try:
42
  # Create the plot
43
  fig, ax = plt.subplots(figsize=(10, 6))
44
  ax.plot(df['ds'], df['y'], label='Historical Sales', color='blue')
 
47
  ax.set_ylabel('Sales')
48
  ax.set_title('Sales Forecasting with ARIMA')
49
  ax.legend()
50
+ return None, fig
51
+ except Exception as e:
52
+ return f"Failed to generate plot: {str(e)}", None
53
 
54
  def setup_interface():
55
  with gr.Blocks() as demo:
56
  gr.Markdown("## MLCast v1.1 - Intelligent Sales Forecasting System")
57
+ file_input = gr.File(label="Upload your store data here (must contain Date and Sales)")
58
+ forecast_button = gr.Button("Forecast Sales")
 
59
  output_plot = gr.Plot()
60
+ output_text = gr.Textbox()
61
+ forecast_button.click(forecast_sales, inputs=[file_input], outputs=[output_text, output_plot])
62
+
63
  return demo
64
 
65
  if __name__ == "__main__":