Kwasiasomani commited on
Commit
4714bf7
1 Parent(s): 799890f

Upload 6 files

Browse files
Files changed (7) hide show
  1. .gitattributes +1 -0
  2. Grocery.csv +3 -0
  3. app.py +145 -0
  4. image 2.jpg +0 -0
  5. images1.jpg +0 -0
  6. requirements.txt +4 -0
  7. toolkit_folder +0 -0
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ Grocery.csv filter=lfs diff=lfs merge=lfs -text
Grocery.csv ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c2026ebae35dd7285f1ac84c4dd08c760f672e68aee2aefa128bab8ee0aedad8
3
+ size 162805137
app.py ADDED
@@ -0,0 +1,145 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Loading key libraries
2
+ import streamlit as st
3
+ import os
4
+ import pickle
5
+ import numpy as np
6
+ import pandas as pd
7
+ import re
8
+ from pathlib import Path
9
+ from PIL import Image
10
+ import matplotlib.pyplot as plt
11
+ import seaborn as sns
12
+
13
+
14
+
15
+ # Setting the page configurations
16
+ st.set_page_config(page_title= "Prediction Forecasting", layout= "wide", initial_sidebar_state= "auto")
17
+
18
+ # Setting the page title
19
+ st.title("Grocery Store Forecasting Prediction")
20
+
21
+ # Load the saved data
22
+ df = pd.read_csv('Grocery.csv')
23
+
24
+
25
+ toolkit = "toolkit_folder"
26
+ @st.cache_resource
27
+ def load_toolkit(filepath = toolkit):
28
+ with open(toolkit, "rb") as file:
29
+ loaded_toolkit = pickle.load(file)
30
+ return loaded_toolkit
31
+
32
+
33
+ toolkit = load_toolkit()
34
+ Encoder = toolkit["OneHotEncoder"]
35
+ model = toolkit["model"]
36
+
37
+
38
+
39
+ # main sections of the app
40
+ menu = st.sidebar.radio('menu',['Home view','Prediction target'])
41
+
42
+ if menu == 'Home view':
43
+ st.write('Grocery Store Time Series Forecasting')
44
+ st.image('images1.jpg',width = 450)
45
+ st.write('Graphical representation and Data Overview')
46
+ if st.checkbox('Data Set '):
47
+ st.table(df.head(15))
48
+ st.title('Charts')
49
+ graph = st.selectbox('Varieties of graphs',['scatter plot','Bar chat','Histogram'])
50
+ if graph == 'scatter plot':
51
+ fig,ax = plt.subplots(figsize=(10,5))
52
+ sns.scatterplot(y = 'target',x = 'onpromotion',data = df.iloc[:1000],palette = 'bright',hue = 'city');
53
+ st.pyplot(fig)
54
+
55
+ if graph == 'Bar chat':
56
+ fig,ax = plt.subplots(figsize=(10,5))
57
+ t = df.groupby("city")["target"].sum().reset_index().sort_values(by="target",ascending=False).iloc[:10]
58
+ sns.barplot(data=t[:20] , y="target", x="city", palette='Blues_d')
59
+ st.pyplot(fig)
60
+
61
+ if graph == 'Histogram':
62
+ fig,ax = plt.subplots(figsize=(10,5))
63
+ st.write('Target Categories')
64
+ sns.distplot(df.target.iloc[:20], kde=True)
65
+ st.pyplot(fig)
66
+
67
+
68
+
69
+
70
+
71
+ if menu == 'Prediction target':
72
+ st.image('image 2.jpg', width = 460)
73
+
74
+ st.sidebar.markdown('User Input Details and Information')
75
+
76
+ store_id= st.sidebar.selectbox('store_id', options = sorted(list(df['store_id'].unique())))
77
+ category_id= st.sidebar.selectbox('categegory_id',options = sorted(list(df['category_id'].unique())))
78
+ onpromotion= st.sidebar.number_input('onpromotion', min_value= df["onpromotion"].min(), value= df["onpromotion"].min())
79
+ year = st.sidebar.selectbox('year', options = sorted(list(df['year'].unique())))
80
+ month = st.sidebar.selectbox('month', options = sorted(list(df['month'].unique())))
81
+ dayofmonth= st.sidebar.number_input('dayofmonth', min_value= df["dayofmonth"].min(), value= df["dayofmonth"].min())
82
+ dayofweek = st.sidebar.number_input('dayofweek', min_value= df["dayofweek"].min(), value= df["dayofweek"].min())
83
+ dayofyear = st.sidebar.number_input('dayofyear', min_value= df["dayofyear"].min(), value= df["dayofyear"].min())
84
+ weekofyear = st.sidebar.number_input('weekofyear', min_value= df["weekofyear"].min(), value= df["weekofyear"].min())
85
+ quarter = st.sidebar.number_input('quarter', min_value= df["quarter"].min(), value= df["quarter"].min())
86
+ is_month_start = st.sidebar.number_input('is_month_start', min_value= df["is_month_start"].min(), value= df["is_month_start"].min())
87
+ is_month_end = st.sidebar.number_input('is_month_end', min_value= df["is_month_end"].min(), value= df["is_month_end"].min())
88
+ is_quarter_start = st.sidebar.number_input('is_quarter_start', min_value= df["is_quarter_start"].min(), value= df["is_quarter_start"].min())
89
+ is_quarter_end = st.sidebar.number_input('is_quarter_end', min_value= df["is_quarter_end"].min(), value= df["is_quarter_end"].min())
90
+ is_year_start = st.sidebar.number_input('is_year_start', min_value= df["is_year_start"].min(), value= df["is_year_start"].min())
91
+ is_year_end = st.sidebar.number_input('is_year_end', min_value= df["is_year_end"].min(), value= df["is_year_end"].min())
92
+ year_weekofyear = st.sidebar.number_input('year_weekofyear', min_value= df["year_weekofyear"].min(), value= df["year_weekofyear"].min())
93
+ city = st.sidebar.selectbox("city:", options= sorted(set(df["city"])))
94
+ type= st.sidebar.number_input('type', min_value= df["type"].min(), value= df["type"].min())
95
+ cluster = st.sidebar.selectbox('cluster', options = sorted(list(df['cluster'].unique())))
96
+
97
+
98
+
99
+ input_df = {
100
+ 'store_id':store_id,
101
+ 'category_id':category_id,
102
+ 'onpromotion' :onpromotion,
103
+ 'year' : year,
104
+ 'month' :month,
105
+ 'dayofmonth' :dayofmonth,
106
+ 'dayofweek' : dayofweek,
107
+ 'dayofyear' : dayofyear,
108
+ 'weekofyear' : weekofyear,
109
+ 'quarter' : quarter,
110
+ 'is_month_start' : is_month_start,
111
+ 'is_month_end' : is_month_start,
112
+ 'is_quarter_start' : is_quarter_start,
113
+ 'is_quarter_end' : is_quarter_end,
114
+ 'is_year_start' : is_year_start,
115
+ 'is_year_end' : is_year_end,
116
+ 'year_weekofyear' : year_weekofyear,
117
+ 'city' : city,
118
+ 'type' : type,
119
+ 'cluster': cluster
120
+ }
121
+
122
+ # Put the input dictionary in a dataset
123
+ input_data = pd.DataFrame(input_df, index = [0])
124
+
125
+
126
+
127
+ # defining categories and numeric columns
128
+
129
+ categoric_column = ['city']
130
+ columns = list(input_data.columns)
131
+ encoded_cat = Encoder.transform(input_data[categoric_column])
132
+
133
+ # we dropped the categorical encoder column before we concat
134
+ train_enc = input_data.drop(['city'],axis = 1)
135
+ input_d = pd.concat([train_enc, encoded_cat], axis=1)
136
+
137
+ # convert input_data to a numpy array before flattening to convert it back to a 2D array
138
+ input_df= input_d.to_numpy()
139
+ prediction = model.predict(input_df.flatten().reshape(1, -1))
140
+
141
+
142
+ if st.button('Predict'):
143
+ st.success('The predicted target is ' + str(round(prediction[0],2)))
144
+
145
+
image 2.jpg ADDED
images1.jpg ADDED
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ streamlit
2
+ pandas
3
+ numpy
4
+ xgboost
toolkit_folder ADDED
Binary file (221 kB). View file