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()