nickuperdana's picture
commit initial model deploy
27752c7 verified
raw
history blame
7.78 kB
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') # judul streamlit
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()