Spaces:
Sleeping
Sleeping
""" | |
Graded Challenge 5 | |
Nama: Qothrunnadaa Alyaa | |
Batch: HCK-009 | |
File ini digunakan untuk menjalankan form prediksi default nasabah kartu kredit | |
""" | |
import streamlit as st | |
import pandas as pd | |
import pickle | |
# Membuat function untuk dipanggil di app.py | |
def run(): | |
st.title('Credit Card Default Predictor') | |
# Mendefinisikan pilihan jenjang pendidikan terakhir | |
edu_lvl = ['High School', 'Undergraduate', 'Graduate School', 'Others'] | |
# Mendefinisikan pilihan status pembayaran tagihan | |
pay_option_map = { | |
'-2: Unused': -2, | |
'-1: Paid in full': -1, | |
'0: Revolving credit': 0, | |
'1: One month late payment': 1, | |
'2: Two months late payment': 2, | |
'3: Three months late payment': 3, | |
'4: Four months late payment': 4, | |
'5: Five months late payment': 5, | |
'6: Six months late payment': 6, | |
'7: Seven months late payment': 7, | |
'8: Eight months late payment': 8, | |
'9: Nine months or more late payment': 9 | |
} | |
pay_option = list(pay_option_map.keys()) | |
pay_status = {} | |
# Mendefinisikan nominal tagihan yang dibayarkan oleh nasabah | |
paid_amt = {} | |
# List bulan tagihan | |
months = ['September', 'August', 'July', 'June', 'May', 'April'] | |
# Memasukkan data inference dengan form prediksi | |
# Limit balance | |
limit_balance = st.number_input(label='Input your credit card limit balance here', min_value=0.0) | |
# Education level | |
education_level = st.selectbox(label='Education Level:', options=edu_lvl) | |
if education_level == 'Graduate School': | |
education = 1 | |
elif education_level == 'High School': | |
education = 2 | |
elif education_level == 'Undergraduate': | |
education = 3 | |
else: | |
education = 0 | |
# Status pembayaran (pay) dan tagihan yang dibayarkan (pay_amt) | |
for month in months: | |
chosen_month = st.selectbox(label=f'Payment status in {month}', options=pay_option) | |
pay_status[month] = pay_option_map[chosen_month] | |
paid_amt[month] = st.number_input(label=f'Paid amount in {month}', min_value=0.0) | |
# Membuat data inference dari data yang dimasukkin | |
data_inf = pd.DataFrame({ | |
'limit_balance': limit_balance, | |
'education_level': education, | |
'pay_9': pay_status['September'], | |
'pay_8': pay_status['August'], | |
'pay_7': pay_status['July'], | |
'pay_6': pay_status['June'], | |
'pay_5': pay_status['May'], | |
'pay_4': pay_status['April'], | |
'pay_amt_9': paid_amt['September'], | |
'pay_amt_8': paid_amt['August'], | |
'pay_amt_7': paid_amt['July'], | |
'pay_amt_6': paid_amt['June'], | |
'pay_amt_5': paid_amt["May"], | |
'pay_amt_4': paid_amt['April'] | |
}, index=[0]) | |
# Menampilkan data | |
st.header("Client's Credit Overview") | |
st.table(data_inf) | |
# Memprediksi apakah nasabah akan mengalami default atau tidak | |
if st.button(label='Predict'): | |
with open('logreg.pkl', 'rb') as logreg: | |
model = pickle.load(logreg) | |
y_pred_inf = model.predict(data_inf) | |
if y_pred_inf == 0: | |
st.write('Nasabah tidak gagal bayar tagihan bulan depan') | |
else: | |
st.write('Nasabah akan GAGAL BAYAR bulan depan') |