barentz96's picture
Update app.py
ae49019
# Import library
import streamlit as st
import pandas as pd
import numpy as np
import pickle
from tensorflow.keras.models import load_model
# Load All Files
# Model KNN
# Load All Files
# Preprocessor
with open('preprocessor.pkl', 'rb') as file_1:
preprocessor = pickle.load(file_1)
model = load_model('best_model.h5')
st.subheader('Customer Churn Prediction')
st.write('Please Fill The Information Below')
# make 2 columns
col1, col2 = st.columns(2)
col11, col22, col33 = st.columns(3)
# Variabel for input data
membership = ['Premium Membership', 'Platinum Membership', 'Gold Membership','Silver Membership', 'Basic Membership', 'No Membership']
with col1:
membership_category = st.radio('Membership',(membership))
feedback_cat = ['Products always in Stock','Reasonable Price','User Friendly Website', 'Quality Customer Care',
'Poor Product Quality', 'Poor Website', 'Poor Customer Service', 'Too many ads', 'No reason specified']
with col2:
feedback = st.radio('Feedback',(feedback_cat))
with col1:
offer_application_preference = st.radio('Prefer Offer',('Yes', 'No'))
with col2:
preferred_offer_types = st.radio('Offer Type',('Gift Vouchers/Coupons', 'Credit/Debit Card Offers','Without Offers'))
with col1:
joined_through_referral = st.radio('Using Refferall',('Yes', 'No'))
with col11:
points_in_wallet = st.number_input('Points In Wallet',0.00, 1500.00)
with col22:
avg_time_spent = st.number_input('Time Spent On Website (Hours)',0.00, 3050.00)
with col33:
avg_transaction_value = st.number_input('Total Transcation Amount (USD)',0.00, 99900.00)
with col11:
avg_frequency_login_days = st.slider('Login Website In A Day',0, 70)
with col22:
days_since_last_login = st.slider('Days Since Last Login',0, 30)
with col33:
days_since_join = st.slider('Days Since Join',0, 30)
# make buttom for prediction
if st.button('Predict'):
data_inf = pd.DataFrame({'membership_category': membership_category, 'feedback': feedback,
'points_in_wallet': points_in_wallet,'avg_transaction_value': avg_transaction_value,
'avg_frequency_login_days' : avg_frequency_login_days,'joined_through_referral' : joined_through_referral,
'offer_application_preference' : offer_application_preference, 'preferred_offer_types' : preferred_offer_types,
'avg_time_spent' : avg_time_spent, 'days_since_join' : days_since_join,
'days_since_last_login' : days_since_last_login}, index=[0])
# Preprocess data inf
data_inf_trans = preprocessor.transform(data_inf)
# prediction using model
y_pred = model.predict(data_inf_trans, verbose=0)
# Round the prediction
y_pred = np.round(y_pred)
if y_pred == 1:
y_pred = 'Churn'
else:
y_pred = 'Not Churn'
# make prediction into dataframe
st.subheader('The Customer Will be')
st.subheader(y_pred)