Spaces:
Sleeping
Sleeping
Upload app.py
Browse files
app.py
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import gradio as gr
|
| 2 |
+
import pandas as pd
|
| 3 |
+
import numpy as np
|
| 4 |
+
from statsmodels.tsa.arima.model import ARIMA
|
| 5 |
+
from sklearn.metrics import mean_squared_error, mean_absolute_percentage_error
|
| 6 |
+
import plotly.graph_objects as go
|
| 7 |
+
|
| 8 |
+
def forecast_stock(days_ahead):
|
| 9 |
+
df = pd.read_excel("Microsoft_stock_data.xlsx")
|
| 10 |
+
df['Date'] = pd.to_datetime(df['Date'])
|
| 11 |
+
df = df.sort_values('Date')
|
| 12 |
+
|
| 13 |
+
data = df['Close'].values
|
| 14 |
+
|
| 15 |
+
model = ARIMA(data, order=(1,1,1))
|
| 16 |
+
fitted = model.fit()
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
forecast = fitted.forecast(steps=int(days_ahead))
|
| 20 |
+
|
| 21 |
+
|
| 22 |
+
fig = go.Figure()
|
| 23 |
+
fig.add_trace(go.Scatter(x=df['Date'].tail(100), y=data[-100:], name='Historical'))
|
| 24 |
+
future_dates = pd.date_range(start=df['Date'].iloc[-1], periods=int(days_ahead)+1)[1:]
|
| 25 |
+
fig.add_trace(go.Scatter(x=future_dates, y=forecast, name='Forecast'))
|
| 26 |
+
fig.update_layout(title='Stock Price Forecast', xaxis_title='Date', yaxis_title='Price')
|
| 27 |
+
|
| 28 |
+
return fig
|
| 29 |
+
|
| 30 |
+
with gr.Blocks() as demo:
|
| 31 |
+
gr.Markdown("# 📈 Time Series Forecasting: ARIMA vs LSTM")
|
| 32 |
+
gr.Markdown("**Microsoft Stock Price Forecasting** - This app demonstrates ARIMA model forecasting.")
|
| 33 |
+
|
| 34 |
+
days = gr.Slider(1, 90, value=30, label="Days to Forecast")
|
| 35 |
+
plot = gr.Plot()
|
| 36 |
+
|
| 37 |
+
demo.load(forecast_stock, days, plot)
|
| 38 |
+
days.change(forecast_stock, days, plot)
|
| 39 |
+
|
| 40 |
+
demo.launch()
|