Bitha commited on
Commit
54f382a
1 Parent(s): 03d82bf

Upload Files

Browse files
Files changed (5) hide show
  1. Churn_Modelling.csv +0 -0
  2. app.py +27 -0
  3. model.pkl +3 -0
  4. prediction.py +65 -0
  5. requirements.txt +5 -0
Churn_Modelling.csv ADDED
The diff for this file is too large to render. See raw diff
 
app.py ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Import Library
2
+ import streamlit as st
3
+
4
+ # Import the created Streamlit Page
5
+ # import eda
6
+ import prediction
7
+
8
+ # Navigation button
9
+ navigasi = st.sidebar.selectbox(label='Select Page:', options=['Home Page', 'Prediction']) # 'Exploratory Data Analysis',
10
+
11
+ # Looping for navigation
12
+ if navigasi == 'Home Page':
13
+ st.markdown("<h1 style='text-align: center;'>Customer Churn Prediction</h1>", unsafe_allow_html=True)
14
+ st.image("https://miro.medium.com/v2/resize:fit:1358/0*dzmm3qresODlScte")
15
+ st.caption("<p style='text-align: center;'>Source : Medium.com</p>", unsafe_allow_html=True)
16
+ st.write('')
17
+ st.write('**Author : Salsa Sabitha Hurriyah**')
18
+ st.write('**Classification Model for Predicting Customer Churn**')
19
+ st.caption('Please select another menu in the Select Box on the left of your screen to start!')
20
+
21
+ # # Displays the EDA page
22
+ # elif navigasi == 'Exploratory Data Analysis':
23
+ # eda.run()
24
+
25
+ # Displays the Predict page
26
+ elif navigasi == 'Prediction':
27
+ prediction.run()
model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:985651bcb21c2658e75a8cf804a01f3d2c4073e5cb5f71e5846ac23eb3218a2d
3
+ size 4212727
prediction.py ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # import library
2
+ import streamlit as st
3
+ import pandas as pd
4
+ import numpy as np
5
+ import pickle
6
+
7
+ # Load Model
8
+ with open('model.pkl', 'rb') as file:
9
+ model = pickle.load(file)
10
+
11
+ # Function to run streamlit model predictor
12
+ def run():
13
+
14
+ # Set Title
15
+ st.title("Customer Churn Prediction")
16
+ st.markdown('---')
17
+
18
+ # Create a Form for Data Inference
19
+ st.markdown('## Input Data')
20
+ with st.form('my_form'):
21
+ RowNumber = st.number_input('Row Number', min_value=10000, max_value=200000)
22
+ CustomerId = st.number_input('Customer ID', min_value=100000, max_value=20000000)
23
+ Surname = st.text_input('Surname or Last Name', '')
24
+ CreditScore = st.number_input('Credit Score', min_value=350, max_value=850)
25
+ Geography = st.selectbox('Select Geography', ['Spain', 'Germany', 'France'])
26
+ Gender = st.selectbox('Select gender', ['Male', 'Female'])
27
+ Age = st.number_input('Age', min_value=18, max_value=95)
28
+ Tenure = st.number_input('Tenure', min_value=0, max_value=11)
29
+ Balance = st.number_input('Balance', min_value=0, max_value=300000)
30
+ NumOfProducts = st.selectbox('Number of Products', (1,2,3,4))
31
+ HasCrCard = st.selectbox('Has Credit Card or not? 0 = No, Yes = 1', (0,1))
32
+ IsActiveMember = st.selectbox('Is Active Member or not? 0 = No, Yes = 1', (0,1))
33
+ EstimatedSalary = st.number_input('Estimated Salary', min_value=12, max_value=300000)
34
+
35
+ # Create a button to make predictions
36
+ submitted = st.form_submit_button("Predict")
37
+
38
+ # Dataframe
39
+ data = {'RowNumber': RowNumber,
40
+ 'CustomerId': CustomerId,
41
+ 'Surname': Surname,
42
+ 'CreditScore': CreditScore,
43
+ 'Geography': Geography,
44
+ 'Gender': Gender,
45
+ 'Age': Age,
46
+ 'Tenure': Tenure,
47
+ 'Balance': Balance,
48
+ 'NumOfProducts': NumOfProducts,
49
+ 'HasCrCard': HasCrCard,
50
+ 'IsActiveMember': IsActiveMember,
51
+ 'EstimatedSalary': EstimatedSalary
52
+ }
53
+
54
+ df = pd.DataFrame([data])
55
+ st.dataframe(df)
56
+
57
+ if submitted:
58
+ y_pred_inf = model.predict(df)
59
+ if y_pred_inf[0] == 0:
60
+ st.subheader('~ This Customer is Predicted Not to Churn ~')
61
+ else:
62
+ st.write('~ This Customer is Predicted to Churn ~')
63
+
64
+ if __name__== '__main__':
65
+ run()
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ seaborn
2
+ pandas
3
+ matplotlib
4
+ plotly
5
+ scikit-learn==1.2.2