Spaces:
Sleeping
Sleeping
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() |