saifarko's picture
Upload app.py
73fd6db verified
raw
history blame
1.33 kB
import gradio as gr
import pandas as pd
import numpy as np
from statsmodels.tsa.arima.model import ARIMA
from sklearn.metrics import mean_squared_error, mean_absolute_percentage_error
import plotly.graph_objects as go
def forecast_stock(days_ahead):
df = pd.read_excel("Microsoft_stock_data.xlsx")
df['Date'] = pd.to_datetime(df['Date'])
df = df.sort_values('Date')
data = df['Close'].values
model = ARIMA(data, order=(1,1,1))
fitted = model.fit()
forecast = fitted.forecast(steps=int(days_ahead))
fig = go.Figure()
fig.add_trace(go.Scatter(x=df['Date'].tail(100), y=data[-100:], name='Historical'))
future_dates = pd.date_range(start=df['Date'].iloc[-1], periods=int(days_ahead)+1)[1:]
fig.add_trace(go.Scatter(x=future_dates, y=forecast, name='Forecast'))
fig.update_layout(title='Stock Price Forecast', xaxis_title='Date', yaxis_title='Price')
return fig
with gr.Blocks() as demo:
gr.Markdown("# ๐Ÿ“ˆ Time Series Forecasting: ARIMA vs LSTM")
gr.Markdown("**Microsoft Stock Price Forecasting** - This app demonstrates ARIMA model forecasting.")
days = gr.Slider(1, 90, value=30, label="Days to Forecast")
plot = gr.Plot()
demo.load(forecast_stock, days, plot)
days.change(forecast_stock, days, plot)
demo.launch()