|
|
import streamlit as st |
|
|
import pandas as pd |
|
|
import os |
|
|
from model import load_ILINetDataset, preprocess_data, train_val_split, scale_train, train, predict, save_model, load_model, inverse_scale_predictions, plot_results, compute_mape |
|
|
|
|
|
st.title('Exponential Smoothing on ILINetDataset') |
|
|
|
|
|
if st.button(label='Get result chart'): |
|
|
|
|
|
path = f'./models' |
|
|
model_name = 'ExponentialSmoothing.pkl' |
|
|
|
|
|
if not os.path.exists(path=path): |
|
|
os.makedirs(path) |
|
|
|
|
|
if not model_name in os.listdir(path=path): |
|
|
dataset = load_ILINetDataset() |
|
|
prep_data = preprocess_data(dataset) |
|
|
train_ili, val_ili = train_val_split(prep_data) |
|
|
scaled_train_ili, scaler = scale_train(train_ili=train_ili) |
|
|
model = train(scaled_train_ili) |
|
|
save_model(model=model, path=path) |
|
|
else: |
|
|
model = load_model(path=os.path.join(path, model_name)) |
|
|
|
|
|
preds = predict(model=model, val_ili=val_ili) |
|
|
unscaled_preds = inverse_scale_predictions(preds, scaler) |
|
|
fig = plot_results(train_ili=train_ili, val_ili=val_ili, preds=unscaled_preds) |
|
|
st.pyplot(fig=fig) |
|
|
st.metric(label='MAPE', value='{:.2f}%'.format(compute_mape(preds=unscaled_preds, val=val_ili))) |
|
|
|