Ayslove commited on
Commit
d464c09
1 Parent(s): f99573a

Upload 10 files

Browse files
Files changed (10) hide show
  1. P1G5_Set_1_Syihabuddin_Ahmad.csv +0 -0
  2. app.py +41 -0
  3. defpaypers.png +0 -0
  4. eda.py +68 -0
  5. graph3.png +0 -0
  6. graph4.png +0 -0
  7. heatmap.png +0 -0
  8. model.pkl +3 -0
  9. models.py +59 -0
  10. requirements.txt +7 -0
P1G5_Set_1_Syihabuddin_Ahmad.csv ADDED
The diff for this file is too large to render. See raw diff
 
app.py ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import eda
3
+ import models
4
+
5
+
6
+ page = st.sidebar.selectbox(label='Select Page:', options=['Home Page', 'Exploration Data Analysis', 'Model Prediksi'])
7
+
8
+ if page == 'Home Page':
9
+ st.header('Welcome Page')
10
+ st.write('')
11
+ st.write('Credit Card Default Next Month Payment Prediction')
12
+ st.write('Nama : Syihabuddin Ahmad Satisma')
13
+ st.write('Batch : HCK-017')
14
+ st.write('Tujuan : Memprediksi seorang klien apakah akan gagal bayar atau tidak')
15
+ st.write('')
16
+ st.caption('Silahkan pilih menu lain di Select Box pada sebelah kiri layar anda untuk memulai!')
17
+ st.write('')
18
+ st.write('')
19
+ with st.expander("Latar Belakang"):
20
+ st.caption('Sebuah perusahaan pemberi jasa kartu kredit\
21
+ ingin mengurangi resiko seorang klien yang\
22
+ kemungkinan gagal bayar. Karena dengan\
23
+ gagalnya seorang klien membayar angsuran kartu\
24
+ kredit tentu akan mempengaruhi kesehatan dari\
25
+ keuangan sebuah perusahaan tersebut.')
26
+
27
+ with st.expander("Problem Statement"):
28
+ st.caption('Keuangan suatu perusahaan penyedia jasa\
29
+ layanan kartu kredit terdampak signifikan\
30
+ dari gagalnya klien dalam mengangsur pembayaran.\
31
+ Maka dari itu perusahaan ingin mengetahui\
32
+ kemungkinan apakah bulan depan seorang klien akan\
33
+ gagal bayar atau tidak jika dilihat dengan pattern dan data.')
34
+
35
+ with st.expander("Kesimpulan"):
36
+ st.caption('Berdasarkan problem statement di atas saya berencana untuk membuat model\
37
+ yang dapat mengklasifikasikan seseorang akan membayar atau tidak dengan menggunakan metode SVM.')
38
+ elif page == 'Exploration Data Analysis':
39
+ eda.run()
40
+ else:
41
+ models .run()
defpaypers.png ADDED
eda.py ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ from PIL import Image
4
+
5
+ #membuat function untuk nantinya dipanggil di app.py
6
+ def run():
7
+ st.title('Welcome to Exploration Data Analysis')
8
+ #Memanggil data csv
9
+ df= pd.read_csv('P1G5_Set_1_Syihabuddin_Ahmad.csv')
10
+
11
+ #menampilakn 5 data teratas
12
+ st.table(df.head(5))
13
+
14
+ #menampilakn heatmap
15
+ st.title('Heatmap Correlation')
16
+ image = Image.open('heatmap.png')
17
+ st.image(image, caption='Numeric column to default pay')
18
+
19
+ #menampilkan penjelasan
20
+ with st.expander('Explanation'):
21
+ st.caption('Pengecekan korelasi antara kolom numerik\
22
+ dengan angka, dapat diketahui bahwa kolom\
23
+ numerik yang berkorelasi dengan default_pay\
24
+ yaitu: limit_balance, pay_amt_1, pay_amt_2,\
25
+ pay_amt_3, pay_amt_4 dan pay_amt_6')
26
+
27
+ #menampilakn barplot
28
+ st.title('Barplot Default Pay Distribution')
29
+ image = Image.open('defpaypers.png')
30
+ st.image(image, caption='Data Distribution')
31
+
32
+ #menampilkan penjelasan
33
+ with st.expander('Explanation'):
34
+ st.caption('Pengecekan distribusi data dari kolom default_payment_next_month\
35
+ dapat diketahui bahwa datanya adalah imbalance karena perbedaannya\
36
+ sangat signifikan antara kategori No dengan kategori Yes dengan\
37
+ total 78.58% dibandingkan dengan 21.42%. Dari data tersebut dapat\
38
+ ditarik kesimpulan bahwa hanya sedikit orang yang gagal bayar yaitu\
39
+ sebanyak 21.42%')
40
+
41
+ #menampilakn barplot
42
+ st.title('Default Pay Education Level')
43
+ image = Image.open('graph3.png')
44
+ st.image(image, caption='Education Level Default Payment')
45
+
46
+ #menampilkan penjelasan
47
+ with st.expander('Explanation'):
48
+ st.caption('Grafik di atas menunjukan grafik dari default pay dengan kategori\
49
+ education level. Dapat diambil kesimpulan bahwa data yang tidak\
50
+ gagal bayar ataupun yang gagal bayar tertingginya adalah di kategori\
51
+ University. Pada kategori University ini, terjadi lebih banyak gagal\
52
+ bayar dibandingkan kategori yang lainnya.')
53
+
54
+ #menampilakn barplot
55
+ st.title('Marital Status to Default Pay')
56
+ image = Image.open('graph4.png')
57
+ st.image(image, caption='Marital status column to default pay')
58
+
59
+ #menampilkan penjelasan
60
+ with st.expander('Explanation'):
61
+ st.caption('Pada grafik di atas dapat diketahui bahwa status pernikahan yang single\
62
+ memiliki jumlah yang lebih banyak dibandingkan menikah dalam konteks\
63
+ tidak gagal bayar, namun pada konteks gagal bayar hampir tidak memiliki\
64
+ perbedaan.')
65
+
66
+
67
+
68
+
graph3.png ADDED
graph4.png ADDED
heatmap.png ADDED
model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5831aea1303342898dc0b18b6946aada607ca790c22002d220be24764df668d6
3
+ size 110390
models.py ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import pickle
4
+
5
+ st.write('Model untuk prediksi gagal bayar atau tidak gagal bayar. \
6
+ \n0: Sukses bayar\
7
+ \n1: Telat sebulan\
8
+ \n2: Telat 2 bulan\
9
+ \n3: Telat 3 bulan\
10
+ \n4: Telah lebih dari 3 bulan.')
11
+
12
+ def run():
13
+ # Load All Files
14
+ with open('model.pkl', 'rb') as file:
15
+ full_process = pickle.load(file)
16
+
17
+ pay_1 = st.selectbox(label='choose delay payment in a month', options=[0.0, 1.0, 2.0, 3.0, 4.0], key='pay_1')
18
+ pay_2 = st.selectbox(label='choose delay payment in a month', options=[0.0, 1.0, 2.0, 3.0, 4.0], key='pay_2')
19
+ pay_3 = st.selectbox(label='choose delay payment in a month', options=[0.0, 2.0, 3.0, 4.0], key='pay_3')
20
+ pay_4 = st.selectbox(label='choose delay payment in a month', options=[0.0, 2.0, 3.0, 4.0], key='pay_4')
21
+ pay_5 = st.selectbox(label='choose delay payment in a month', options=[0.0, 2.0, 3.0, 4.0], key='pay_5')
22
+ pay_6 = st.selectbox(label='choose delay payment in a month', options=[0.0, 2.0, 3.0, 4.0], key='pay_6')
23
+ limit_balance = st.number_input(label='Limit Balance', key='limit_balance')
24
+ pay_amt_1 = st.number_input(label='Pay Amount 1', key='pay_amt_1')
25
+ pay_amt_2 = st.number_input(label='Pay Amount 2', key='pay_amt_2')
26
+ pay_amt_3 = st.number_input(label='Pay Amount 3', key='pay_amt_3')
27
+ pay_amt_4 = st.number_input(label='Pay Amount 4', key='pay_amt_4')
28
+ pay_amt_6 = st.number_input(label='Pay Amount 6', key='pay_amt_6')
29
+
30
+ st.write('In the following is the result of the data you have input:')
31
+
32
+ data_inf = pd.DataFrame({
33
+ 'pay_1': [pay_1],
34
+ 'pay_2': [pay_2],
35
+ 'pay_3': [pay_3],
36
+ 'pay_4': [pay_4],
37
+ 'pay_5': [pay_5],
38
+ 'pay_6': [pay_6],
39
+ 'Limit Balance': [limit_balance],
40
+ 'pay amount 1': [pay_amt_1],
41
+ 'pay amount 2': [pay_amt_2],
42
+ 'pay amount 3': [pay_amt_3],
43
+ 'pay amount 4': [pay_amt_4],
44
+ 'pay amount 6': [pay_amt_6]
45
+ })
46
+
47
+ st.table(data_inf)
48
+
49
+ if st.button(label='Predict'):
50
+ # data dummy prediction
51
+ yPred_inf = full_process.predict(data_inf)
52
+ st.metric(label="Here is a prediction of default payment next month:", value=y_pred_inf[0])
53
+
54
+ # result of prediction
55
+ if yPred_inf[0] == 0:
56
+ st.write('Not Default')
57
+
58
+ else:
59
+ st.write('Default')
requirements.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ pandas
2
+ numpy
3
+ seaborn
4
+ matplotlib
5
+ scikit-learn
6
+ imbalanced-learn
7
+ feature-engine