# 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(""" """, 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