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