Spaces:
Sleeping
Sleeping
# import required libraries | |
import pandas as pd | |
import numpy as np | |
import matplotlib.pyplot as plt | |
import seaborn as sns | |
import pickle | |
import joblib | |
import os | |
from datetime import datetime | |
from datetime import timedelta | |
from sklearn.model_selection import RandomizedSearchCV, GridSearchCV, train_test_split | |
from sklearn.ensemble import RandomForestRegressor | |
from sklearn.metrics import r2_score | |
from sklearn.preprocessing import LabelEncoder | |
from sklearn.preprocessing import StandardScaler | |
import streamlit as st | |
import warnings | |
warnings.filterwarnings('ignore') | |
st.title("Predict Unrolled Values") | |
st.sidebar.header('Enter the Details here') | |
st.write("""This Random Forest Regressor model helps to forecast unrolled values with impressive accuracy. | |
Leveraging the strength of the Random Forest technique, we can now make reliable predictions that | |
enable us to plan and strategize effectively in the fast-paced media landscape.""") | |
# load the saved model using pickle | |
with open('aajTak_model.pkl', 'rb') as file: | |
model = pickle.load(file) | |
# # # load the saved model using joblib | |
# model3 = joblib.load('aajTak_model.joblib') | |
# Load the saved weekDay label encoder object using pickle | |
with open('weekDay_le.pkl','rb') as file1: | |
weekDay_le = pickle.load(file1) | |
# Load the saved timeBand label encoder object using pickle | |
with open('timeBand_le.pkl','rb') as file2: | |
timeBand_le = pickle.load(file2) | |
# previous_number_of_repairs = | |
# st.sidebar.number_input('Enter the Previous Number of Repairs Undergone 0 to 5 )',min_value=0,max_value=5,step=1) | |
# DATA from user | |
def user_report(): | |
# Share = round(float(st.sidebar.slider('Share', 0.000000, 100.000000, 0.611246, step=0.000001)), 6) | |
# AMA = round(float(st.sidebar.slider('AMA', 0.000000, 45.000000, 4.196084, step=0.000001)), 6) | |
# rate = round(float(st.sidebar.slider('rate', 0.000000, 1.500000, 0.018516, step=0.000001)), 6) | |
# daily_reach = round(float(st.sidebar.slider('daily reach', 0.000000, 300.000000, 36.23)), 6) | |
# cume_reach = round(float(st.sidebar.slider('cume reach', 0.000000, 300.000000, 36.231006)), 6) | |
Share = round(float(st.sidebar.number_input('Share', 0.0, 100.0, 0.611246, step=0.000001)), 6) | |
AMA = round(float(st.sidebar.number_input('AMA', 0.0, 45.0, 4.196084, step=0.000001)), 6) | |
rate = round(float(st.sidebar.number_input('rate', 0.0, 1.5, 0.018516, step=0.000001)), 6) | |
daily_reach = round(float(st.sidebar.number_input('daily reach', 0.0, 300.0, 36.23, step=0.000001)), 6) | |
cume_reach = round(float(st.sidebar.number_input('cume reach', 0.0, 300.0, 36.231006, step=0.000001)), 6) | |
# Share = st.sidebar.slider('Share', 0, 100, 0) | |
# AMA = st.sidebar.slider('AMA', 0, 45, 4) | |
# rate = st.sidebar.slider('rate', 0, 1, 0) | |
# daily_reach = st.sidebar.slider('daily reach', 0, 300, 36) | |
# cume_reach = st.sidebar.slider('cume reach', 0, 300, 36) | |
# Output: {'Friday': 0, 'Monday': 1, 'Saturday': 2, 'Sunday': 3, 'Thursday': 4, 'Tuesday': 5, 'Wednesday': 6} | |
Week_Day_Encoded = st.sidebar.selectbox("Week Day", | |
("Monday", "Tuesday","Wednesday","Thursday","Friday", "Saturday", "Sunday" )) | |
if Week_Day_Encoded=='Monday': | |
Week_Day_Encoded=1 | |
elif Week_Day_Encoded=="Tuesday": | |
Week_Day_Encoded=5 | |
elif Week_Day_Encoded=="Wednesday": | |
Week_Day_Encoded=6 | |
elif Week_Day_Encoded=="Thursday": | |
Week_Day_Encoded =4 | |
elif Week_Day_Encoded=="Friday": | |
Week_Day_Encoded =0 | |
elif Week_Day_Encoded=="Saturday": | |
Week_Day_Encoded =2 | |
else: | |
Week_Day_Encoded=3 | |
# The Time Band dictionary provided | |
time_band_dict = { | |
'02:00:00 - 02:30:00': 0, '02:30:00 - 03:00:00': 1, '03:00:00 - 03:30:00': 2, '03:30:00 - 04:00:00': 3, | |
'04:00:00 - 04:30:00': 4, '04:30:00 - 05:00:00': 5, '05:00:00 - 05:30:00': 6, '05:30:00 - 06:00:00': 7, | |
'06:00:00 - 06:30:00': 8, '06:30:00 - 07:00:00': 9, '07:00:00 - 07:30:00': 10, '07:30:00 - 08:00:00': 11, | |
'08:00:00 - 08:30:00': 12, '08:30:00 - 09:00:00': 13, '09:00:00 - 09:30:00': 14, '09:30:00 - 10:00:00': 15, | |
'10:00:00 - 10:30:00': 16, '10:30:00 - 11:00:00': 17, '11:00:00 - 11:30:00': 18, '11:30:00 - 12:00:00': 19, | |
'12:00:00 - 12:30:00': 20, '12:30:00 - 13:00:00': 21, '13:00:00 - 13:30:00': 22, '13:30:00 - 14:00:00': 23, | |
'14:00:00 - 14:30:00': 24, '14:30:00 - 15:00:00': 25, '15:00:00 - 15:30:00': 26, '15:30:00 - 16:00:00': 27, | |
'16:00:00 - 16:30:00': 28, '16:30:00 - 17:00:00': 29, '17:00:00 - 17:30:00': 30, '17:30:00 - 18:00:00': 31, | |
'18:00:00 - 18:30:00': 32, '18:30:00 - 19:00:00': 33, '19:00:00 - 19:30:00': 34, '19:30:00 - 20:00:00': 35, | |
'20:00:00 - 20:30:00': 36, '20:30:00 - 21:00:00': 37, '21:00:00 - 21:30:00': 38, '21:30:00 - 22:00:00': 39, | |
'22:00:00 - 22:30:00': 40, '22:30:00 - 23:00:00': 41, '23:00:00 - 23:30:00': 42, '23:30:00 - 24:00:00': 43, | |
'24:00:00 - 24:30:00': 44, '24:30:00 - 25:00:00': 45, '25:00:00 - 25:30:00': 46, '25:30:00 - 26:00:00': 47} | |
selected_time_band = st.sidebar.selectbox('Time Band', list(time_band_dict.keys())) | |
Time_Band_Encoded = time_band_dict[selected_time_band] | |
user_report_data = { | |
'Share': Share, | |
'AMA': AMA, | |
'rate': rate, | |
'daily reach': daily_reach, | |
'cume reach': cume_reach, | |
'Week_Day_Encoded': Week_Day_Encoded, | |
'Time_Band_Encoded': Time_Band_Encoded} | |
report_data = pd.DataFrame(user_report_data, index=[0]) | |
return report_data | |
#Customer Data | |
user_data = user_report() | |
st.subheader("Entered Details") | |
st.write(user_data) | |
# define the prediction function | |
def predict_unrolled_value(user_data): | |
# make the prediction using the loaded model and input data | |
predicted_unrolled_value = model.predict(user_data) | |
# # return the predict_unrolled_value as output | |
# return predicted_unrolled_value[0] | |
# return the predicted unrolled value as output with 6 decimal places | |
return float(predicted_unrolled_value[0]) | |
# Function calling | |
y_pred = predict_unrolled_value(user_data) | |
# CSS code for changing color of the button | |
st.markdown(""" | |
<style> | |
.stButton button { | |
background-color: #668f45; | |
color: white; | |
} | |
</style> | |
""", unsafe_allow_html=True) | |
# st.write("Click here to see the Predictions") | |
if st.button("Click here for Predictions"): | |
st.subheader(f"Predicted Unrolled Value: {y_pred:.6f}") | |
# Testing purpose | |
# 0.611246 4.196084 0.018516 36.23 36.231006 'Saturday' ''08:00:00 - 08:30:00'' | |
# 3.711884 | |