Spaces:
Sleeping
Sleeping
Upload 9 files
Browse files- X_cat.txt +1 -0
- X_num_norm.txt +1 -0
- X_num_skew.txt +1 -0
- app.py +10 -0
- eda.py +46 -0
- gabungandata.csv +0 -0
- pipelines.pkl +3 -0
- prediction.py +72 -0
- requirements.txt +7 -0
X_cat.txt
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
["HasCrCard", "IsActiveMember", "Geography", "Gender"]
|
X_num_norm.txt
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
["CreditScore", "Tenure", "Balance", "EstimatedSalary"]
|
X_num_skew.txt
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
["Age", "NumOfProducts"]
|
app.py
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import eda
|
3 |
+
import prediction
|
4 |
+
|
5 |
+
navigation = st.sidebar.selectbox('Pilih Halaman: ', ('EDA', 'predict'))
|
6 |
+
|
7 |
+
if navigation == 'EDA':
|
8 |
+
eda.run()
|
9 |
+
else:
|
10 |
+
prediction.run()
|
eda.py
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import pandas as pd
|
3 |
+
import seaborn as sns
|
4 |
+
import matplotlib.pyplot as plt
|
5 |
+
import plotly.express as px
|
6 |
+
|
7 |
+
st.set_page_config(
|
8 |
+
page_title= 'pelanggan pergi?',
|
9 |
+
layout='wide',
|
10 |
+
initial_sidebar_state='expanded'
|
11 |
+
)
|
12 |
+
def run():
|
13 |
+
# membuat Tittle
|
14 |
+
st.title('prediksi pelanggan yang tak akan kembali')
|
15 |
+
|
16 |
+
# magic syntaxs
|
17 |
+
'''
|
18 |
+
pada page kali ini, penulis akan mencoba melihat apakah pelanggan akan pergi untuk selamanya atau tidak
|
19 |
+
'''
|
20 |
+
|
21 |
+
# show dataframe
|
22 |
+
data = pd.read_csv('gabungandata.csv')
|
23 |
+
st.dataframe(data)
|
24 |
+
|
25 |
+
# membuat barplot berdasarkan input user
|
26 |
+
st.write('#### barplot berdasarkan Input user')
|
27 |
+
pilihan = st.selectbox('pilih colomn: ', ('Gender', 'NumOfProducts', 'Geography', 'Exited'))
|
28 |
+
fig = plt.figure(figsize= (15,5))
|
29 |
+
sns.countplot(data[pilihan])
|
30 |
+
st.pyplot(fig)
|
31 |
+
|
32 |
+
# membuat histogram berdasarkan input user
|
33 |
+
st.write('#### Histogram berdasarkan Input user')
|
34 |
+
pilihan = st.selectbox('pilih colomn: ', ('CreditScore', 'Age', 'Balance', 'EstimatedSalary', 'Balance'))
|
35 |
+
fig = plt.figure(figsize= (15,5))
|
36 |
+
sns.histplot(data[pilihan], bins=30, kde=True)
|
37 |
+
st.pyplot(fig)
|
38 |
+
|
39 |
+
# membuat plotly plot
|
40 |
+
st.write('#### Plotly Plot - age with CreditScore')
|
41 |
+
fig = px.scatter(data, x='Age', y= 'CreditScore', hover_data=['Exited'])
|
42 |
+
st.plotly_chart(fig)
|
43 |
+
|
44 |
+
if __name__== '__main__':
|
45 |
+
run()
|
46 |
+
|
gabungandata.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
pipelines.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:45ce4a964f252a7d5560a5a258ad2ed2f71ce9bff95cb61ca213d343ac468f85
|
3 |
+
size 17582071
|
prediction.py
ADDED
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import pandas as pd
|
3 |
+
import numpy as np
|
4 |
+
import pickle
|
5 |
+
import json
|
6 |
+
|
7 |
+
# Load All Files
|
8 |
+
with open('pipelines.pkl', 'rb') as file_1:
|
9 |
+
clf_rfc = pickle.load(file_1)
|
10 |
+
|
11 |
+
with open('X_num_skew.txt', 'r') as file_2:
|
12 |
+
X_num_skew = json.load(file_2)
|
13 |
+
|
14 |
+
with open('X_num_norm.txt', 'r') as file_3:
|
15 |
+
X_num_norm = json.load(file_3)
|
16 |
+
|
17 |
+
with open('X_cat.txt', 'r') as file_4:
|
18 |
+
X_cat = json.load(file_4)
|
19 |
+
|
20 |
+
def run():
|
21 |
+
# membuat Tittle
|
22 |
+
st.title('prediksi apakah konsumen anda pergi?')
|
23 |
+
|
24 |
+
with st.form(key='form_prediksi_konsumen_minggat'):
|
25 |
+
Surname = st.text_input('Surname', value='')
|
26 |
+
Age = st.number_input('Age', min_value=18, max_value=80, step=1, help='Usia pelanggan?')
|
27 |
+
Gender = st.radio('Gender', ('Male','Female'), index=1, help='jenis kelamin?')
|
28 |
+
Geography = st.selectbox('Geography', ('Spain','France', 'Germany'), index=0, help='kebangsaan?')
|
29 |
+
st.markdown('---')
|
30 |
+
|
31 |
+
HasCrCard = st.selectbox('HasCrCard', (0,1), index=0, help='apakah anda kartu kredit?')
|
32 |
+
IsActiveMember = st.selectbox('IsActiveMember', (0,1), index=0, help='apakah anda punya kartu member?')
|
33 |
+
st.markdown('---')
|
34 |
+
|
35 |
+
CreditScore = st.slider('CreditScore', 350, 850, 500)
|
36 |
+
Tenure = st.slider('Tenure', 0, 10, 0)
|
37 |
+
Balance = st.slider('Balance', 0, 250000, 50000)
|
38 |
+
EstimatedSalary = st.slider('EstimatedSalary', 1000, 150000, 34000)
|
39 |
+
NumOfProducts = st.slider('NumOfProducts', 1, 4, 1)
|
40 |
+
|
41 |
+
submitted = st.form_submit_button('Predict')
|
42 |
+
|
43 |
+
data_inf = {
|
44 |
+
'Age': Age,
|
45 |
+
'Gender': Gender,
|
46 |
+
'Geography': Geography,
|
47 |
+
'HasCrCard': HasCrCard,
|
48 |
+
'IsActiveMember': IsActiveMember,
|
49 |
+
'CreditScore': CreditScore,
|
50 |
+
'Tenure': Tenure,
|
51 |
+
'Balance': Balance,
|
52 |
+
'EstimatedSalary': EstimatedSalary,
|
53 |
+
'NumOfProducts': NumOfProducts,
|
54 |
+
}
|
55 |
+
|
56 |
+
data_inf = pd.DataFrame([data_inf])
|
57 |
+
a = st.dataframe(data_inf)
|
58 |
+
b = ('')
|
59 |
+
|
60 |
+
if a == 0:
|
61 |
+
b = 'tidak pergi'
|
62 |
+
else:
|
63 |
+
b = 'pergi'
|
64 |
+
|
65 |
+
if submitted:
|
66 |
+
|
67 |
+
y_pred_inf = clf_rfc.predict(data_inf)
|
68 |
+
st.write('# berapa pelanggan anda pergi? \n', str(b))
|
69 |
+
|
70 |
+
if __name__== '__main__':
|
71 |
+
run()
|
72 |
+
|
requirements.txt
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
streamlit
|
2 |
+
pandas
|
3 |
+
seaborn
|
4 |
+
matplotlib
|
5 |
+
plotly
|
6 |
+
numpy
|
7 |
+
scikit-learn==1.2.1
|