File size: 4,656 Bytes
d0c30b2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10e9376
d0c30b2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10e9376
d0c30b2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10e9376
d0c30b2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import streamlit as st
import pickle
from tensorflow.keras.models import load_model
import pandas as pd
import numpy as np

# Load All Files

with open('final_pipeline.pkl', 'rb') as file_1:
  model_pipeline = pickle.load(file_1)

model_ann = load_model('customer_churn.h5')

def run():
    with st.form(key='Churn_Customer_Prediction'):
        user_id = st.text_input('User_ID', value='')
        age = st.number_input('Age', min_value=23, max_value=65, value=23)
        gender = st.selectbox('Gender', ('Male', 'Female'), index=1)
        days_since_last_login = st.number_input('Last Login', min_value=0, max_value=26, value=0)
        avg_time_spent = st.number_input('Avg. Time Spent', min_value=0, max_value=3236, value=0)
        avg_transaction_value = st.number_input('Avg. Transaction Value', min_value=800, max_value=99915, value=29271)
        avg_frequency_login_days = st.number_input('Avg. Frequency Login Days', min_value=0, max_value=73, value=0)
        points_in_wallet = st.number_input('Points in Wallet', min_value=0, max_value=2070, value=0)
        joining_date = st.date_input("Select Join Date")
        last_visit_time = st.time_input('Last Visit Time')
        st.markdown('---')

        region_category = st.selectbox('Region Category', ('Village', 'Town', 'City'), index=1)
        membership_category = st.selectbox('Membership Category', ('No Membership', 'Basic Membership', 
                                                                   'Silver Membership', 'Premium Membership',
                                                                   'Gold Membership', 'Platinum Membership'), index=1)
        preferred_offer_types = st.selectbox('Preffered Offer', ('Without Offers', 'Credit/Debit Card Offers', 
                                                                 'Gift Vouchers/Coupons'), index=1)
        medium_of_operation = st.selectbox('Medium Ops', ('Desktop', 'Mobile', 'Both'
                                                          'Gift Vouchers/Coupons'), index=1)
        internet_option = st.selectbox('Internet Ops', ('Wi-Fi', 'Fiber_Optic', 'Mobile-Data'), index=1)
        feedback = st.selectbox('Feedback', ('Poor Website', 'Poor Customer Service', 'Poor Product Quality',
                                             'Too many ads', 'No reason specified', 'Products always in Stock',
                                             'Reasonable Price', 'Quality Customer Care', 'User Friendly Website'), index=1)
        complaint_status = st.selectbox('Complaint Status', ('No Information Available', 'Not Aplicable', 'Unsolved',
                                                             'Solved', 'Solved in Follow-up'), index=1)
        
        st.markdown('---')

        joined_through_referral = st.selectbox('Join Through Referral', ('Yes', 'No'), index=1)
        used_special_discount = st.selectbox('Use Special Discount', ('Yes', 'No'), index=1)
        offer_application_preference = st.selectbox('Offer Application Preference', ('Yes', 'No'), index=1)
        past_complaint = st.selectbox('Past Complaint', ('Yes', 'No'), index=1)

        submitted = st.form_submit_button('Predict')

    data_inf = {
    'user_id': user_id,
    '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])
    data_inf_transform = model_pipeline.transform(data_inf)

    a = st.dataframe(data_inf_transform)
    b = ''

    if len(data_inf_transform) == 0:
        b = 'Not Churn'
    else:
        # Predict using ANN: Sequential API
        y_pred_inf = model_ann.predict(data_inf_transform)
        y_pred_inf = np.where(y_pred_inf >= 0.5, 1, 0)
        if y_pred_inf == 0:
            b = 'Not Churn'
        else:
            b = 'Churn'

    if submitted:
        st.write('# Prediction : ', b)

if __name__ == '__main__':
    run()