ann-milestone1-p2 / prediction.py
ardifarizky's picture
initial commit
9795401
import streamlit as st
import pandas as pd
import numpy as np
import pickle
from tensorflow.keras.models import load_model
#Load all files
with open('final_pipeline.pkl', 'rb') as file_1:
model_pipeline = pickle.load(file_1)
model_ann = load_model("model1.h5", compile=False)
def run():
hide_streamlit_style = """
<style>
#MainMenu {visibility: hidden;}
footer {visibility: hidden;}
</style>
"""
st.markdown(hide_streamlit_style, unsafe_allow_html=True)
with st.form(key='Form Hotel'):
age = st.number_input('Age',0,70,step=1)
gender = st.selectbox('Gender',('M', 'F'))
region_category = st.selectbox('Hometown',('City', 'Village', 'Town'))
membership_category = st.selectbox('Membershipo Tier',('No Membership', 'Basic Membership', 'Silver Membership',
'Premium Membership', 'Gold Membership', 'Platinum Membership'))
joining_date = st.date_input('Input date')
joined_through_referral = st.selectbox('Joined with referral?',('Yes', 'No'))
preferred_offer_types = st.selectbox('Preferred offer types',('Without Offers', 'Credit/Debit Card Offers', 'Gift Vouchers/Coupons'))
medium_of_operation = st.selectbox('Medium of operation',('Desktop', 'Smartphone', 'Both'))
internet_option = st.selectbox('Internet option',('Wi-Fi', 'Fiber_Optic', 'Mobile_Data'))
last_visit_time = st.number_input('Last visit time',0,1,step=1)
days_since_last_login = st.number_input('Days since last login',-150,0,step=1)
avg_time_spent = st.number_input('Average time spent',0,3000,step=1)
avg_transaction_value = st.number_input('Average transaction value',0,100000,step=1)
avg_frequency_login_days = st.number_input('Average frequency login day',0,90,step=1)
points_in_wallet = st.number_input('Points in wallet',0,2000,step=1)
used_special_discount = st.selectbox('Used special discount?',('Yes', 'No'))
offer_application_preference = st.selectbox('Offer app preference?',('Yes', 'No'))
past_complaint = st.selectbox('Any past complaint?',('Yes', 'No'))
complaint_status = st.selectbox('Complaint status',('No Information Available', 'Not Applicable', 'Unsolved', 'Solved',
'Solved in Follow-up'))
feedback = st.selectbox('Feedback',('Poor Website', 'Poor Customer Service', 'Too many ads',
'Poor Product Quality', 'No reason specified', 'Products always in Stock',
'Reasonable Price', 'Quality Customer Care', 'User Friendly Website'))
submitted = st.form_submit_button('Predict')
data_inf = {
'user_id' : 'ac6e97806267549f',
'age' : age ,
'gender' : gender ,
'region_category' : region_category ,
'membership_category' : membership_category ,
'joining_date' : joining_date ,
'joined_through_referral' : joined_through_referral ,
'preferred_offer_types' : preferred_offer_types ,
'medium_of_operation' : medium_of_operation ,
'internet_option' : internet_option ,
'last_visit_time' : last_visit_time ,
'days_since_last_login' : days_since_last_login ,
'avg_time_spent' : avg_time_spent ,
'avg_transaction_value' : avg_transaction_value ,
'avg_frequency_login_days' : avg_frequency_login_days ,
'points_in_wallet' : points_in_wallet ,
'used_special_discount' : used_special_discount ,
'offer_application_preference' : offer_application_preference ,
'past_complaint' : past_complaint ,
'complaint_status' : complaint_status ,
'feedback' : feedback ,
}
data_inf = pd.DataFrame([data_inf])
st.dataframe(data_inf)
data_inf['joining_date'] = pd.to_datetime(data_inf['joining_date'])
data_inf['joining_day'] = data_inf['joining_date'].dt.day
data_inf['joining_month'] = data_inf['joining_date'].dt.month
data_inf['joining_year'] = data_inf['joining_date'].dt.year
if submitted:
data_inf_transform = model_pipeline.transform(data_inf)
y_pred_inf = model_ann.predict(data_inf_transform)
y_pred_inf = np.where(y_pred_inf >= 0.5, 1, 0)
y_pred_inf
if y_pred_inf == 1:
st.write('likely to be churn')
else:
st.write('likely will not be churn')
#st.write(f'# (1 = Yes, 0 = No) : {str(int(data_pred_inf))}')
if __name__ == '__main__':
run()