Spaces:
Runtime error
Runtime error
Astralsparks
commited on
Commit
•
ceaf554
1
Parent(s):
3795c97
Upload 3 files
Browse files- app.py +92 -0
- func_model_tuned.hdf5 +0 -0
- preprocessor.pkl +3 -0
app.py
ADDED
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# import library yang dibutuhkan
|
2 |
+
import streamlit as st
|
3 |
+
import pandas as pd
|
4 |
+
import numpy as np
|
5 |
+
import joblib
|
6 |
+
from tensorflow import keras
|
7 |
+
|
8 |
+
# load preprocessor
|
9 |
+
with open('preprocessor.pkl','rb') as file_1:
|
10 |
+
preprocessor = joblib.load(file_1)
|
11 |
+
|
12 |
+
# load ANN model
|
13 |
+
model = keras.models.load_model('func_model_tuned.hdf5')
|
14 |
+
|
15 |
+
# Construct Data Infer
|
16 |
+
# define semua fitur/kolom
|
17 |
+
features = [
|
18 |
+
'region_category', 'membership_category', 'joined_through_referral',
|
19 |
+
'preferred_offer_types', 'medium_of_operation', 'days_since_last_login',
|
20 |
+
'avg_time_spent', 'avg_transaction_value', 'avg_frequency_login_days',
|
21 |
+
'points_in_wallet', 'used_special_discount',
|
22 |
+
'offer_application_preference', 'feedback']
|
23 |
+
|
24 |
+
def infer(data_infer):
|
25 |
+
# preprocess input
|
26 |
+
preprocessed_data = preprocessor.transform(data_infer)
|
27 |
+
# predict result with best model
|
28 |
+
pred = model.predict(preprocessed_data)
|
29 |
+
pred = np.where(pred>0.5,1,0)
|
30 |
+
return pred
|
31 |
+
|
32 |
+
# header deployment
|
33 |
+
st.header("Customer Churn Prediction")
|
34 |
+
|
35 |
+
|
36 |
+
# artificial data infer
|
37 |
+
region_category_ = ['City', 'Town', 'Village']
|
38 |
+
region_category = st.selectbox("Where are you from?", region_category_)
|
39 |
+
membership_category_ = ['No Membership','Basic Membership','Premium Membership','Silver Membership','Gold Membership','Platinum Membership']
|
40 |
+
membership_category = st.selectbox("What is your membership status?", membership_category_)
|
41 |
+
joined_through_referral = st.radio("Did you joined through referral?",('Yes','No'))
|
42 |
+
preferred_offer_types_ = ['Gift Vouchers/Coupons', 'Without Offers','Credit/Debit Card Offers']
|
43 |
+
preferred_offer_types = st.selectbox("Which one is your preferred offer types?", preferred_offer_types_)
|
44 |
+
medium_of_operation_ = ['Smartphone', 'Desktop', 'Both']
|
45 |
+
medium_of_operation = st.selectbox("What kind of device do you use to browse our website?", medium_of_operation_)
|
46 |
+
days_since_last_login = st.slider("How many days since you last logged in to our website?",0,90)
|
47 |
+
avg_time_spent = st.slider("Approximately, how long did you browse for product from our website?",0,90)
|
48 |
+
avg_transaction_value = st.slider("How much did you spend from our website? (give us the average)",0,100000)
|
49 |
+
avg_frequency_login_days = st.slider("How frequent did you visits our website in a day?",0,100)
|
50 |
+
points_in_wallet = st.slider("How many points do you have in your wallet?",0,10000)
|
51 |
+
used_special_discount = st.radio("Did you used special discount?",('Yes','No'))
|
52 |
+
offer_application_preference = st.radio("Did you prefer offers from us?",('Yes','No'))
|
53 |
+
feedback_ = ['Quality Customer Care', 'Too many ads', 'User Friendly Website',
|
54 |
+
'Poor Website', 'No reason specified', 'Poor Customer Service',
|
55 |
+
'Poor Product Quality', 'Reasonable Price',
|
56 |
+
'Products always in Stock']
|
57 |
+
feedback = st.selectbox("From the following choice, please give us your feedback",feedback_)
|
58 |
+
|
59 |
+
|
60 |
+
|
61 |
+
if st.button("Submit"):
|
62 |
+
D ={
|
63 |
+
'region_category' :region_category,
|
64 |
+
'membership_category' :membership_category,
|
65 |
+
'joined_through_referral' :joined_through_referral,
|
66 |
+
'preferred_offer_types' :preferred_offer_types,
|
67 |
+
'medium_of_operation' :medium_of_operation,
|
68 |
+
'days_since_last_login' :days_since_last_login,
|
69 |
+
'avg_time_spent' :avg_time_spent,
|
70 |
+
'avg_transaction_value' :avg_transaction_value,
|
71 |
+
'avg_frequency_login_days' :avg_frequency_login_days,
|
72 |
+
'points_in_wallet' :points_in_wallet,
|
73 |
+
'used_special_discount' :used_special_discount,
|
74 |
+
'offer_application_preference' :offer_application_preference,
|
75 |
+
'feedback' :feedback
|
76 |
+
}
|
77 |
+
|
78 |
+
# construct data inference dalam dataframe
|
79 |
+
data_infer = pd.DataFrame(data=D,columns=features,index=[0])
|
80 |
+
|
81 |
+
|
82 |
+
#panggil fungsi inference
|
83 |
+
pred = infer(data_infer)
|
84 |
+
pred_string = ''
|
85 |
+
if pred==1:
|
86 |
+
pred_string = "churn"
|
87 |
+
else:
|
88 |
+
pred_string = "not churn"
|
89 |
+
|
90 |
+
st.header(f"Prediction Result: ")
|
91 |
+
st.write("This customer will " + pred_string)
|
92 |
+
|
func_model_tuned.hdf5
ADDED
Binary file (53.4 kB). View file
|
|
preprocessor.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:8b22acc3c142b5bf26c8f50063b4b717078bf1424ecd3967f0d67f32f57cde0c
|
3 |
+
size 6968
|