default_payment / app.py
didev007's picture
Upload 7 files
c57920b
import streamlit as st
import pickle
import json
import pandas as pd
import numpy as np
with open("list_num_skew_columns.txt", 'r') as file_1:
list_num_skew_columns = json.load(file_1)
with open("list_cat_nom_columns.txt", "r") as file_2:
num_col_skew = json.load(file_2)
with open("scaler_minmax.pkl", "rb") as file_3:
model_scaler = pickle.load(file_3)
with open("encoder_n.pkl", "rb") as file_4:
model_nominal_encoder = pickle.load(file_4)
with open("knn_gridcv_best.pkl", "rb") as file_5:
knn_gridcv_best = pickle.load(file_5)
def run():
# create form
with st.form("form_payment"):
age = st.number_input("age",
min_value= 20,
max_value= 70,
value=30,
step=2)
limit_balance = st.slider("limit_balance",0,800000)
bill_amt_1 = st.slider("bill_amt_1",-100000,600000)
bill_amt_2 = st.slider("bill_amt_2",-100000,600000)
bill_amt_3 = st.slider("bill_amt_3",-100000,600000)
bill_amt_4 = st.slider("bill_amt_4",-100000,600000)
bill_amt_5 = st.slider("bill_amt_5",-100000,600000)
bill_amt_6 = st.slider("bill_amt_6",-100000,600000)
st.markdown("---")
pay_amt_1 = st.slider("pay_amt_1",-0,1000000)
pay_amt_2 = st.slider("pay_amt_2",-0,1000000)
pay_amt_3 = st.slider("pay_amt_3",-0,1000000)
pay_amt_4 = st.slider("pay_amt_4",-0,1000000)
pay_amt_5 = st.slider("pay_amt_5",-0,1000000)
pay_amt_6 = st.slider("pay_amt_6",-0,1000000)
st.markdown("---")
sex = st.radio("sex",("1","2"),help="1 for male,2 for female",index= 0)
education_level = st.radio("education level",("0","1","2","3","4","5","6"),index= 0)
marital_status = st.radio("marital_status",("0","1","2","3"),index= 0)
st.markdown("---")
pay_0 = st.radio("pay_0",("-2","-1","0","1","2","3","4","5","6","7","8"),index= 0)
pay_2 = st.radio("pay_2",("-2","-1","0","1","2","3","4","5","6","7","8"),index= 0)
pay_3 = st.radio("pay_3",("-2","-1","0","1","2","3","4","5","6","7","8"),index= 0)
pay_4 = st.radio("pay_4",("-2","-1","0","1","2","3","4","5","6","7","8"),index= 0)
pay_5 = st.radio("pay_5",("-2","-1","0","1","2","3","4","5","6","7","8"),index= 0)
pay_6 = st.radio("pay_6",("-2","-1","0","1","2","3","4","5","6","7","8"),index= 0)
st.markdown("---")
submitted = st.form_submit_button("predict")
data_inf = {
"limit_balance" : limit_balance,
"sex" : sex,
"education_level" : education_level,
"marital_status" : marital_status,
"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)
if submitted:
data_inf_num_skew = data_inf[list_num_skew_columns]
data_inf_cat_nom = data_inf[num_col_skew]
data_inf_num_scal = model_scaler.transform(data_inf_num_skew)
data_inf_cat_nom_enc = model_nominal_encoder.transform(data_inf_cat_nom)
data_inf_final = np.concatenate([data_inf_num_scal,data_inf_cat_nom_enc],axis=1)
y_predict_inf = knn_gridcv_best.predict(data_inf_final)
st.write("# Default_payment: ",str(int(y_inf_pred)))
if __name__=="__main__":
run()