Spaces:
Sleeping
Sleeping
Upload 5 files
Browse files- P1G5_Set_1_salsa_sabitha.csv +0 -0
- app.py +28 -0
- eda.py +52 -0
- model.pkl +3 -0
- prediction.py +72 -0
P1G5_Set_1_salsa_sabitha.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
app.py
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Import Library
|
2 |
+
import streamlit as st
|
3 |
+
|
4 |
+
# Import Halaman Streamlit yang telah dibuat
|
5 |
+
import eda
|
6 |
+
import prediction
|
7 |
+
|
8 |
+
# Tombol Navigasi
|
9 |
+
navigasi = st.sidebar.selectbox(label='Select Page:', options=['Home Page', 'Exploration Data Analysis', 'Model Prediksi'])
|
10 |
+
|
11 |
+
# Looping untuk navigasi
|
12 |
+
if navigasi == 'Home Page':
|
13 |
+
st.image("https://storage.googleapis.com/danacita-website-v3-prd/website_v3/images/biaya_bootcamp__kursus_hacktiv8_6.original.png")
|
14 |
+
st.header('Graded Chalenge 5')
|
15 |
+
st.write('')
|
16 |
+
st.write('Nama : Salsa Sabitha Hurriyah')
|
17 |
+
st.write('Batch : HCK - 014')
|
18 |
+
st.write('Model Classification untuk memprediksi pembayaran kredit card pada bulan berikutnya')
|
19 |
+
st.write('')
|
20 |
+
st.caption('Silahkan pilih menu lain pada Select Box di sebelah kiri layar anda untuk memulai!')
|
21 |
+
|
22 |
+
# Menampilkan halam EDA
|
23 |
+
elif navigasi == 'Exploration Data Analysis':
|
24 |
+
eda.run()
|
25 |
+
|
26 |
+
# Menampilkan halaman prediksi
|
27 |
+
elif navigasi == 'Model Prediksi':
|
28 |
+
prediction.run()
|
eda.py
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# import library
|
2 |
+
import streamlit as st
|
3 |
+
import pandas as pd
|
4 |
+
import numpy as np
|
5 |
+
import matplotlib.pyplot as plt
|
6 |
+
import seaborn as sns
|
7 |
+
import plotly.express as px
|
8 |
+
|
9 |
+
# Set Config Halaman
|
10 |
+
st.set_page_config(
|
11 |
+
page_title = "Exploratory Data Analysis (EDA)",
|
12 |
+
)
|
13 |
+
|
14 |
+
def run():
|
15 |
+
|
16 |
+
# Set Judul
|
17 |
+
st.title("Exploration Data Analysis (EDA) dari Dataset")
|
18 |
+
|
19 |
+
# Memasukkan Gambar
|
20 |
+
st.image("https://images.bisnis.com/posts/2022/11/08/1595896/kartu_kredit_freepik.jpg")
|
21 |
+
|
22 |
+
# Load Data
|
23 |
+
data = pd.read_csv("P1G5_Set_1_salsa_sabitha.csv")
|
24 |
+
|
25 |
+
# Membuat header dataset
|
26 |
+
st.subheader("Dataset Kartu Kredit")
|
27 |
+
st.markdown('Ukuran dataset : 2814 rows, diperoleh dari 201 * 14 (tahun lahir dikalikan batch) yang disesuaikan')
|
28 |
+
|
29 |
+
# Menampilkan dataframe pada streamlit
|
30 |
+
st.dataframe(data)
|
31 |
+
st.markdown('---')
|
32 |
+
|
33 |
+
# Menampilkan distribusi data default payment status
|
34 |
+
st.subheader("Distribusi data default payment status")
|
35 |
+
|
36 |
+
# Distribusi data default payment status
|
37 |
+
# Membuat data untuk menampilkan pie chart
|
38 |
+
labels = [0, 1]
|
39 |
+
sizes = data['default_payment_next_month'].value_counts()
|
40 |
+
colors = ['pink', 'grey']
|
41 |
+
|
42 |
+
# Membuat pie chart
|
43 |
+
fig, ax = plt.subplots()
|
44 |
+
ax.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=140)
|
45 |
+
|
46 |
+
# Menampilkan pie chart
|
47 |
+
ax.axis('equal')
|
48 |
+
st.pyplot(fig)
|
49 |
+
st.write('Diketahui bahwa status payment dengan status 0 (tidak gagal bayar) lebih banyak dibandingkan dengan status 1 (gagal bayar) dengan persentase "78.6%" dan "21.4%"')
|
50 |
+
|
51 |
+
if __name__== '__main__':
|
52 |
+
run()
|
model.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:b0537ea04193b9e36045dc3ebabb22a269fe327a2d410b7b7df2164f3423ffe3
|
3 |
+
size 1716
|
prediction.py
ADDED
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# import library
|
2 |
+
import streamlit as st
|
3 |
+
import pandas as pd
|
4 |
+
import numpy as np
|
5 |
+
import pickle
|
6 |
+
|
7 |
+
# Set Config Halaman
|
8 |
+
st.set_page_config(
|
9 |
+
page_title = "Prediksi Payment Status",
|
10 |
+
layout = 'wide',
|
11 |
+
initial_sidebar_state = 'expanded'
|
12 |
+
)
|
13 |
+
|
14 |
+
# Load Model
|
15 |
+
with open('model.pkl', 'rb') as file:
|
16 |
+
model = pickle.load(file)
|
17 |
+
|
18 |
+
# Function untuk menjalankan streamlit model predictor
|
19 |
+
def run():
|
20 |
+
|
21 |
+
# Set judul
|
22 |
+
st.title("Memprediksi Kemungkinan Seseorang Mampu Membayar Kredit atau Tidak")
|
23 |
+
st.markdown('---')
|
24 |
+
st.image("https://dlabs.ai/wp-content/uploads/2021/09/price-prediction-1024x538.png")
|
25 |
+
|
26 |
+
# Buat Form Untuk Data Inference
|
27 |
+
st.markdown('## Input Data')
|
28 |
+
with st.form('my_form'):
|
29 |
+
Limit_balance = st.number_input('Limit Balance', min_value=10000, max_value=999999999)
|
30 |
+
Pay_1 = st.selectbox('Repayment Status in September', (-2,-1,0,1,2,3,4,5,6,7,8))
|
31 |
+
Pay_2 = st.selectbox('Repayment Status in August', (-2,-1,0,1,2,3,4,5,6,7,8))
|
32 |
+
Pay_3 = st.selectbox('Repayment Status in July', (-2,-1,0,1,2,3,4,5,6,7,8))
|
33 |
+
Pay_4 = st.selectbox('Repayment Status in June', (-2,-1,0,1,2,3,4,5,6,7,8))
|
34 |
+
Pay_5 = st.selectbox('Repayment Status in May', (-2,-1,0,1,2,3,4,5,6,7,8))
|
35 |
+
Pay_6 = st.selectbox('Repayment Status in April', (-2,-1,0,1,2,3,4,5,6,7,8))
|
36 |
+
Pay_amt_1 = st.number_input('Bill Statement in September', min_value=-999999999, max_value=999999999)
|
37 |
+
Pay_amt_2 = st.number_input('Bill Statement in August', min_value=-999999999, max_value=999999999)
|
38 |
+
Pay_amt_3 = st.number_input('Bill Statement in July', min_value=-999999999, max_value=999999999)
|
39 |
+
Pay_amt_4 = st.number_input('Bill Statement in June', min_value=-999999999, max_value=999999999)
|
40 |
+
Pay_amt_5 = st.number_input('Bill Statement in May', min_value=-999999999, max_value=999999999)
|
41 |
+
Pay_amt_6 = st.number_input('Bill Statement in April', min_value=-999999999, max_value=999999999)
|
42 |
+
|
43 |
+
# Membuat tombol untuk melakukan prediksi
|
44 |
+
submitted = st.form_submit_button("Predict")
|
45 |
+
|
46 |
+
# dataframe
|
47 |
+
data = {'limit_balance': Limit_balance,
|
48 |
+
'pay_1': Pay_1,
|
49 |
+
'pay_2': Pay_2,
|
50 |
+
'pay_3': Pay_3,
|
51 |
+
'pay_4': Pay_4,
|
52 |
+
'pay_5': Pay_5,
|
53 |
+
'pay_6': Pay_6,
|
54 |
+
'pay_amt_1': Pay_amt_1,
|
55 |
+
'pay_amt_2': Pay_amt_2,
|
56 |
+
'pay_amt_3': Pay_amt_3,
|
57 |
+
'pay_amt_4': Pay_amt_4,
|
58 |
+
'pay_amt_5': Pay_amt_5,
|
59 |
+
'pay_amt_6': Pay_amt_6}
|
60 |
+
|
61 |
+
df = pd.DataFrame([data])
|
62 |
+
st.dataframe(df)
|
63 |
+
|
64 |
+
if submitted:
|
65 |
+
y_pred_inf = model.predict(df)
|
66 |
+
if y_pred_inf[0] == 0:
|
67 |
+
st.write('✅ Tidak Gagal Bayar')
|
68 |
+
else:
|
69 |
+
st.write('❌ Gagal Bayar')
|
70 |
+
|
71 |
+
if __name__== '__main__':
|
72 |
+
run()
|