gc5_deployment / models.py
qothi's picture
Upload 9 files
2337324
"""
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')