File size: 3,913 Bytes
c57920b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
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()