credit-cards-simulation / prediction.py
mnurbani's picture
first deploy
32f44b9
raw
history blame
5.47 kB
import streamlit as st
import pandas as pd
import numpy as np
import pickle
import json
#Load All Files
#load model dan files yang sudah di save pada framing
with open('list_num_cols.txt', 'r') as file_1:
list_num_cols = json.load(file_1)
with open('list_cat_cols.txt', 'r') as file_2:
list_cat_cols = json.load(file_2)
with open('model_svm.pkl', 'rb') as file_3:
model_svm = pickle.load(file_3)
def run():
with st.form('credit_cards_simulation'):
#Field Nama
LimitBalance = st.number_input('Limit Balance', value = 0)
#Field Umur
Sex = st.number_input('Sex', min_value = 1, max_value = 2, value = 1, step = 1, help = '1 = Male, 2 = Female')
#Field Tinggi badan
EducationLevel = st.number_input('Education', min_value = 1, max_value = 6, value = 1, step = 1, help = '1 = Graduate School, 2 = University, 3 = High School, 4 = Other, 5 = Unknown, 6 = Unknown')
#Field Weight
MaritalStatus = st.number_input('Marital Status', min_value = 1, max_value = 3, value = 1, step = 1, help = '1 = Married, 2 = Single, 3 = Other')
#field price
Age = st.slider('Age', 18, 70, 25)
st.markdown('----')
#Field Attacking Work Rate
Pay_0 = st.number_input('Pay 1', min_value = -2, max_value = 9, value = 0, step = 1, help = 'Repayment Status in September, 2025 (-2 = No Transaction, -1 = Pay Duly, 1-9 = Payment Delay 1-9 Month)')
#Field Defensive Work Rate
Pay_2 = st.number_input('Pay 2', min_value = -2, max_value = 9, value = 0, step = 1, help = 'Repayment status in August, 2005 (scale same as above)')
#Field Pace Total
Pay_3 = st.number_input('Pay 3', min_value = -2, max_value = 9, value = 0, step = 1, help = 'Repayment status in July, 2005 (scale same as above)')
#Field Shooting Total
Pay_4 = st.number_input('Pay 4', min_value = -2, max_value = 9, value = 0, step = 1, help = 'Repayment status in June, 2005 (scale same as above)')
#Field Passing Total
Pay_5 = st.number_input('Pay 5', min_value = -2, max_value = 9, value = 0, step = 1, help = 'Repayment status in May, 2005 (scale same as above)')
#Field Dribbling Total
Pay_6 = st.number_input('Pay 6', min_value = -2, max_value = 9, value = 0, step = 1, help = 'Repayment status in April, 2005 (scale same as above)')
#Field Defending Total
Bill_amt_1 = st.number_input('Amount Of Bill 1', value = 0 , help = 'Amount of bill statement in September, 2005 (NT dollar)')
#Field Physicality Total
Bill_amt_2 = st.number_input('Amount Of Bill 2', value = 0, help = 'Amount of bill statement in August, 2005 (NT dollar)')
Bill_amt_3 = st.number_input('Amount Of Bill 3', value = 0, help = 'Amount of bill statement in July, 2005 (NT dollar)')
Bill_amt_4 = st.number_input('Amount Of Bill 4', value = 0, help = 'Amount of bill statement in June, 2005 (NT dollar)')
Bill_amt_5 = st.number_input('Amount Of Bill 5', value = 0, help = 'Amount of bill statement in May, 2005 (NT dollar)')
Bill_amt_6 = st.number_input('Amount Of Bill 6', value = 0, help = 'Amount of bill statement in April, 2005 (NT dollar)')
#Field Pay AMT
Pay_amt_1 = st.number_input('Amount of previous payment 1', value = 0, help = 'Amount of previous payment in September, 2005 (NT dollar)')
Pay_amt_2 = st.number_input('Amount of previous payment 2', value = 0, help = 'Amount of previous payment in August, 2005 (NT dollar)')
Pay_amt_3 = st.number_input('Amount of previous payment 3', value = 0, help = 'Amount of previous payment in July, 2005 (NT dollar)')
Pay_amt_4 = st.number_input('Amount of previous payment 4', value = 0, help = 'Amount of previous payment in June, 2005 (NT dollar)')
Pay_amt_5 = st.number_input('Amount of previous payment 5', value = 0, help = 'Amount of previous payment in May, 2005 (NT dollar)')
Pay_amt_6 = st.number_input('Amount of previous payment 6', value = 0, help = 'Amount of previous payment in April, 2005 (NT dollar)')
#bikin submit button
submitted = st.form_submit_button('Predict')
#Inference
data_inf = {
'limit_balance': LimitBalance,
'sex': Sex,
'education_level': EducationLevel,
'marital_status': MaritalStatus,
'age': Age,
'pay_0' : Pay_0,
'pay_2' : Pay_2,
'pay_3' :Pay_3,
'pay_4': Pay_4,
'pay_5' : Pay_5,
'pay_6' :Pay_6,
'bill_amt_1' :Bill_amt_1,
'bill_amt_2':Bill_amt_2,
'bill_amt_3':Bill_amt_3,
'bill_amt_4':Bill_amt_4,
'bill_amt_5':Bill_amt_5,
'bill_amt_6':Bill_amt_6,
'pay_amt_1':Pay_amt_1,
'pay_amt_2':Pay_amt_2,
'pay_amt_3':Pay_amt_3,
'pay_amt_4':Pay_amt_4,
'pay_amt_5':Pay_amt_5,
'pay_amt_6':Pay_amt_6,
}
data_inf = pd.DataFrame([data_inf])
st.dataframe(data_inf)
#Logic ketika predic button ditekan
if submitted:
#split between numerical and categorical columns
data_inf_num = data_inf[list_num_cols]
data_inf_cat = data_inf[list_cat_cols]
#Scaling & Encoding
data_inf_final = data_inf_num
#predict using linear reg model
y_pred_inf = model_svm.predict(data_inf_final)
st.write('## Payment : ', str(int(y_pred_inf)))
if __name__ == '__main__':
run()