|
import streamlit as st |
|
import pandas as pd |
|
|
|
import pickle |
|
|
|
with open('model.pkl', 'rb') as file_1: |
|
model = pickle.load(file_1) |
|
|
|
def run(): |
|
st.title('Default Credit Card Payment Prediction') |
|
st.markdown('Model ini bertujuan untuk memprediksi status pembayaran seseorang di bulan mendatang dengan simbol 1=gagal bayar dan 0=kredit lancar.') |
|
st.markdown('Model dikelola oleh Nicku R. Perdana (HCK-012)') |
|
st.image('https://img.freepik.com/free-photo/online-shopping-cheerful-asian-girl-holding-credit-card-smartphone-paying-order-with-mobile-phone-standing-yellow-background_1258-93224.jpg?w=1380&t=st=1706441175~exp=1706441775~hmac=daf53df3a74b11c7abb0a3099d93afa158ed12b1d30ff6fdd5b84a390c4d8c44') |
|
st.markdown('Sumber Gambar: Freepik') |
|
st.markdown('---') |
|
|
|
st.markdown('# Prediksi Pembayaran') |
|
st.markdown('## A. Input Data') |
|
with st.form('myForm'): |
|
limitBalance = st.number_input('Limit saldo kartu kredit saat ini:', min_value=10000, max_value=800000, step=1) |
|
sex = st.slider('Jenis kelamin \n(1=Laki-laki; 2=Perempuan)', min_value=1, max_value=2, step=1) |
|
educationLevel = st.number_input('Tingkat pendidikan terakhir (0=Lainnya; 1=Pascasarjana, 2=Universitas; 3=Sekolah Menengah; 4=Lainnya; 5=Lainnya; 6=Lainnya):', min_value=0, max_value=6, step=1) |
|
maritalStatus = st.number_input('Status perkawinan (0=Lainnya; 1=Menikah; 2=Lajang, 3=Cerai):', min_value=0, max_value=3, step=1) |
|
age = st.slider('Usia', min_value=21, max_value=69) |
|
|
|
pay0 = st.number_input('Status pembayaran di bulan September (-2=Tagihan lunas dan tidak ada transaksi (inactive); -1=Tagihan lunas dan ada transaksi yang belum dibayarkan karena tagihan belum muncul; 0=Tagihan kartu kredit telah dibayarkan jumlah minimal; 1=Terlambat bayar 1 bulan; 2=Terlambat bayar 2 bulan; 3=Terlambat bayar 3 bulan; 4=Terlambat bayar 4 bulan; 5=Terlambat bayar 5 bulan; 6=Terlambat bayar 6 bulan; 7=Terlambat bayar 7 bulan; 8=Terlambat bayar 8 bulan; 9=Terlambat bayar 9 bulan):', min_value=-2, max_value=9, step=1) |
|
pay2 = st.number_input('Status pembayaran di bulan Agustus (-2=Tagihan lunas dan tidak ada transaksi (inactive); -1=Tagihan lunas dan ada transaksi yang belum dibayarkan karena tagihan belum muncul; 0=Tagihan kartu kredit telah dibayarkan jumlah minimal; 1=Terlambat bayar 1 bulan; 2=Terlambat bayar 2 bulan; 3=Terlambat bayar 3 bulan; 4=Terlambat bayar 4 bulan; 5=Terlambat bayar 5 bulan; 6=Terlambat bayar 6 bulan; 7=Terlambat bayar 7 bulan; 8=Terlambat bayar 8 bulan; 9=Terlambat bayar 9 bulan):', min_value=-2, max_value=9, step=1) |
|
pay3 = st.number_input('Status pembayaran di bulan Juli (-2=Tagihan lunas dan tidak ada transaksi (inactive); -1=Tagihan lunas dan ada transaksi yang belum dibayarkan karena tagihan belum muncul; 0=Tagihan kartu kredit telah dibayarkan jumlah minimal; 1=Terlambat bayar 1 bulan; 2=Terlambat bayar 2 bulan; 3=Terlambat bayar 3 bulan; 4=Terlambat bayar 4 bulan; 5=Terlambat bayar 5 bulan; 6=Terlambat bayar 6 bulan; 7=Terlambat bayar 7 bulan; 8=Terlambat bayar 8 bulan; 9=Terlambat bayar 9 bulan):', min_value=-2, max_value=9, step=1) |
|
pay4 = st.number_input('Status pembayaran di bulan Juni (-2=Tagihan lunas dan tidak ada transaksi (inactive); -1=Tagihan lunas dan ada transaksi yang belum dibayarkan karena tagihan belum muncul; 0=Tagihan kartu kredit telah dibayarkan jumlah minimal; 1=Terlambat bayar 1 bulan; 2=Terlambat bayar 2 bulan; 3=Terlambat bayar 3 bulan; 4=Terlambat bayar 4 bulan; 5=Terlambat bayar 5 bulan; 6=Terlambat bayar 6 bulan; 7=Terlambat bayar 7 bulan; 8=Terlambat bayar 8 bulan; 9=Terlambat bayar 9 bulan):', min_value=-2, max_value=9, step=1) |
|
pay5 = st.number_input('Status pembayaran di bulan Mei (-2=Tagihan lunas dan tidak ada transaksi (inactive); -1=Tagihan lunas dan ada transaksi yang belum dibayarkan karena tagihan belum muncul; 0=Tagihan kartu kredit telah dibayarkan jumlah minimal; 1=Terlambat bayar 1 bulan; 2=Terlambat bayar 2 bulan; 3=Terlambat bayar 3 bulan; 4=Terlambat bayar 4 bulan; 5=Terlambat bayar 5 bulan; 6=Terlambat bayar 6 bulan; 7=Terlambat bayar 7 bulan; 8=Terlambat bayar 8 bulan; 9=Terlambat bayar 9 bulan):', min_value=-2, max_value=9, step=1) |
|
pay6 = st.number_input('Status pembayaran di bulan April (-2=Tagihan lunas dan tidak ada transaksi (inactive); -1=Tagihan lunas dan ada transaksi yang belum dibayarkan karena tagihan belum muncul; 0=Tagihan kartu kredit telah dibayarkan jumlah minimal; 1=Terlambat bayar 1 bulan; 2=Terlambat bayar 2 bulan; 3=Terlambat bayar 3 bulan; 4=Terlambat bayar 4 bulan; 5=Terlambat bayar 5 bulan; 6=Terlambat bayar 6 bulan; 7=Terlambat bayar 7 bulan; 8=Terlambat bayar 8 bulan; 9=Terlambat bayar 9 bulan):', min_value=-2, max_value=9, step=1) |
|
|
|
billAmt1 = st.number_input('Tagihan untuk bulan September:', min_value=-11545, max_value=613860, step=1, placeholder=0) |
|
billAmt2 = st.number_input('Tagihan untuk bulan Agustus:', min_value=-67526, max_value=512650, step=1, placeholder=0) |
|
billAmt3 = st.number_input('Tagihan untuk bulan Juli:', min_value=-25443, max_value=578971, step=1, placeholder=0) |
|
billAmt4 = st.number_input('Tagihan untuk bulan Juni:', min_value=-46627, max_value=488808, step=1, placeholder=0) |
|
billAmt5 = st.number_input('Tagihan untuk bulan Mei:', min_value=-46627, max_value=488808, step=1, placeholder=0) |
|
billAmt6 = st.number_input('Tagihan untuk bulan April:', min_value=-73895, max_value=441981, step=1, placeholder=0) |
|
|
|
payAmt1 = st.number_input('Tagihan yang dibayar pada bulan September:', min_value=0, max_value=493358, step=1) |
|
payAmt2 = st.number_input('Tagihan yang dibayar pada bulan Agustus:', min_value=0, max_value=1227082, step=1) |
|
payAmt3 = st.number_input('Tagihan yang dibayar pada bulan Juli:', min_value=0, max_value=199209, step=1) |
|
payAmt4 = st.number_input('Tagihan yang dibayar pada bulan Juni:', min_value=0, max_value=202076, step=1) |
|
payAmt5 = st.number_input('Tagihan yang dibayar pada bulan Mei:', min_value=0, max_value=388071, step=1) |
|
payAmt6 = st.number_input('Tagihan yang dibayar pada bulan April:', min_value=0, max_value=403500, step=1) |
|
|
|
submit = st.form_submit_button('Prediksikan!') |
|
|
|
data = {'limit_balance': limitBalance, |
|
'sex': sex, |
|
'education_level': educationLevel, |
|
'marital_status': maritalStatus, |
|
'age': age, |
|
'pay_0': pay0, |
|
'pay_2': pay2, |
|
'pay_3': pay3, |
|
'pay_4': pay4, |
|
'pay_5': pay5, |
|
'pay_6': pay6, |
|
'bill_amt_1': billAmt1, |
|
'bill_amt_2': billAmt2, |
|
'bill_amt_3': billAmt3, |
|
'bill_amt_4': billAmt4, |
|
'bill_amt_5': billAmt5, |
|
'bill_amt_6': billAmt6, |
|
'pay_amt_1': payAmt1, |
|
'pay_amt_2': payAmt2, |
|
'pay_amt_3': payAmt3, |
|
'pay_amt_4': payAmt4, |
|
'pay_amt_5': payAmt5, |
|
'pay_amt_6': payAmt6, |
|
} |
|
|
|
df = pd.DataFrame(data=[data]) |
|
st.markdown('## B. Preview Input') |
|
st.dataframe(df) |
|
|
|
st.markdown('## C. Hasil Prediksi') |
|
|
|
if submit: |
|
classification = model.predict(df) |
|
if classification != 1: |
|
st.write('Anda masih dalam kategori kreditur dengan kredit lancar. Pertahankan dengan selalu tepat waktu dalam melunasi tagihan anda secara rutin.') |
|
else: |
|
st.write('Maaf. Anda berpotensi gagal bayar di periode berikutnya dan berisiko terputus dengan layanan kami. Hindari risiko gagal bayar dengan selalu rutin dan disiplin dalam melunasi tagihan Anda setiap saat.') |
|
|
|
if __name__ == '__main__': |
|
run() |