Spaces:
Runtime error
Runtime error
# Loading key libraries | |
import streamlit as st | |
import os | |
import pickle | |
import numpy as np | |
import pandas as pd | |
import re | |
from pathlib import Path | |
from PIL import Image | |
import matplotlib.pyplot as plt | |
import seaborn as sns | |
import requests | |
# get absolute path and goo two levels up | |
DIRPATH = DIRPATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))) | |
# get path for app data | |
app_data_path =os.path.join(DIRPATH,'dev', 'datasets', 'app_data', 'Grocery.csv.crdownload') | |
# set api endpoint | |
URL = 'https://bright1-sales-forecasting-api.hf.space' | |
API_ENDPOINT = '/predict' | |
# Setting the page configurations | |
st.set_page_config(page_title = "Prediction Forecasting", layout= "wide", initial_sidebar_state= "auto") | |
# Setting the page title | |
st.title("Grocery Store Forecasting Prediction") | |
# Load the saved data | |
df = pd.read_csv(app_data_path) | |
# src\app\images1.jpg | |
image1 = Image.open('src/app/images1.jpg') | |
image2 = Image.open('src/app/image 2.jpg') | |
def make_prediction(store_id, category_id, onpromotion, year,month, dayofmonth, | |
dayofweek, dayofyear,weekofyear, quarter, is_month_start, is_month_end, | |
is_quarter_start, is_quarter_end, is_year_start, is_year_end, | |
year_weekofyear,city, store_type, cluster): | |
parameters = { | |
'store_id':int(store_id), | |
'category_id':int(category_id), | |
'onpromotion' :int(onpromotion), | |
'year' : int(year), | |
'month' : int(month), | |
'dayofmonth' :int(dayofmonth), | |
'dayofweek' : int(dayofweek), | |
'dayofyear' : int(dayofyear), | |
'weekofyear' : int(weekofyear), | |
'quarter' : int(quarter), | |
'is_month_start' : int(is_month_start), | |
'is_month_end' : int(is_month_end), | |
'is_quarter_start' : int(is_quarter_start), | |
'is_quarter_end' : int(is_quarter_end), | |
'is_year_start' : int(is_year_start), | |
'is_year_end' : (is_year_end), | |
'year_weekofyear' : int(year_weekofyear), | |
'city' : city, | |
'store_type' : int(store_type), | |
'cluster': int(cluster), | |
} | |
response = requests.post(url=f'{URL}{API_ENDPOINT}', params=parameters) | |
sales_value = response.json()['sales'] | |
sales_value = round(sales_value, 4) | |
return sales_value | |
st.image(image1, width = 700) | |
st.sidebar.markdown('User Input Details and Information') | |
store_id= st.sidebar.selectbox('store_id', options = sorted(list(df['store_id'].unique()))) | |
category_id= st.sidebar.selectbox('categegory_id',options = sorted(list(df['category_id'].unique()))) | |
onpromotion= st.sidebar.number_input('onpromotion', min_value= df["onpromotion"].min(), value= df["onpromotion"].min()) | |
year = st.sidebar.selectbox('year', options = sorted(list(df['year'].unique()))) | |
month = st.sidebar.selectbox('month', options = sorted(list(df['month'].unique()))) | |
dayofmonth= st.sidebar.number_input('dayofmonth', min_value= df["dayofmonth"].min(), value= df["dayofmonth"].min()) | |
dayofweek = st.sidebar.number_input('dayofweek', min_value= df["dayofweek"].min(), value= df["dayofweek"].min()) | |
dayofyear = st.sidebar.number_input('dayofyear', min_value= df["dayofyear"].min(), value= df["dayofyear"].min()) | |
weekofyear = st.sidebar.number_input('weekofyear', min_value= df["weekofyear"].min(), value= df["weekofyear"].min()) | |
quarter = st.sidebar.number_input('quarter', min_value= df["quarter"].min(), value= df["quarter"].min()) | |
is_month_start = st.sidebar.number_input('is_month_start', min_value= df["is_month_start"].min(), value= df["is_month_start"].min()) | |
is_month_end = st.sidebar.number_input('is_month_end', min_value= df["is_month_end"].min(), value= df["is_month_end"].min()) | |
is_quarter_start = st.sidebar.number_input('is_quarter_start', min_value= df["is_quarter_start"].min(), value= df["is_quarter_start"].min()) | |
is_quarter_end = st.sidebar.number_input('is_quarter_end', min_value= df["is_quarter_end"].min(), value= df["is_quarter_end"].min()) | |
is_year_start = st.sidebar.number_input('is_year_start', min_value= df["is_year_start"].min(), value= df["is_year_start"].min()) | |
is_year_end = st.sidebar.number_input('is_year_end', min_value= df["is_year_end"].min(), value= df["is_year_end"].min()) | |
year_weekofyear = st.sidebar.number_input('year_weekofyear', min_value= df["year_weekofyear"].min(), value= df["year_weekofyear"].min()) | |
city = st.sidebar.selectbox("city:", options= sorted(set(df["city"]))) | |
store_type= st.sidebar.number_input('type', min_value= df["type"].min(), value= df["type"].min()) | |
cluster = st.sidebar.selectbox('cluster', options = sorted(list(df['cluster'].unique()))) | |
# make prediction | |
sales_value = make_prediction(store_id, category_id, onpromotion, year,month, dayofmonth, | |
dayofweek, dayofyear,weekofyear, quarter, is_month_start, is_month_end, | |
is_quarter_start, is_quarter_end, is_year_start, is_year_end, | |
year_weekofyear,city, store_type, cluster) | |
# get predicted value | |
if st.button('Predict'): | |
st.success('The predicted target is ' + str(sales_value)) | |