File size: 5,004 Bytes
693c50e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import streamlit as st
import pickle
import json
import pandas as pd
import numpy as np

with open("list_num_columns.txt", 'r') as file_1:
    list_num_skew_columns = json.load(file_1)

with open("list_cat_nominal_columns.txt", "r") as file_2:
    nom_col_skew = json.load(file_2)

with open("list_cat_ordinal_columns.txt", "r") as file_3:
    ord_col_skew = json.load(file_3)

with open("best_pipeline.pkl", "rb") as file_4:
    best_pipeline = pickle.load(file_4)

def run():
    # create form 
    with st.form("form"):
        age = st.number_input("age",
                            min_value= 5,
                            max_value= 90,
                            value=30,
                            step=2) 
        flight_distance = st.number_input("flight distance",
                            min_value= 31,
                            max_value= 5000,
                            value=850,
                            step=10) 
        departure_delay_in_minutes = st.number_input("departure delay in minutes",
                            min_value= 0,
                            max_value= 1600,
                            value=200,
                            step=10) 
        arrival_delay_in_minutes = st.number_input("arrival delay in minutes",
                            min_value= 0,
                            max_value= 1600,
                            value=200,
                            step=10) 

        st.markdown("---")
        gender = st.radio("gender",("Male","Female"),index= 0)
        customer_type = st.radio("customer type",("Loyal customer","disloyal customer"),index= 0)
        type_of_travel = st.radio("type of travel",('Personal Travel', 'Business travel'),index= 0)
        class_flight = st.radio("class flight",('Eco Plus', 'Business', 'Eco'),index= 0)
        
        st.markdown("---")
        inflight_wifi_service = st.radio("inflight_wifi_service",(0,1,2,3,4,5),index= 0)
        departure_arrival_time_convenient = st.radio("departure/arrival_time_convenient",(0,1,2,3,4,5),index= 0)
        ease_of_online_booking = st.radio("ease_of_online_booking",(0,1,2,3,4,5),index= 0)
        gate_location = st.radio("gate_location",(0,1,2,3,4,5),index= 0)
        food_and_drink = st.radio("food_and_drink",(0,1,2,3,4,5),index= 0)
        online_boarding = st.radio("online_boarding",(0,1,2,3,4,5),index= 0)
        seat_comfort = st.radio("seat_comfort",(0,1,2,3,4,5),index= 0)
        inflight_entertainment = st.radio("inflight_entertainment",(0,1,2,3,4,5),index= 0)
        on_board_service = st.radio("on_board_service",(0,1,2,3,4,5),index= 0)
        leg_room_service = st.radio("leg_room_service",(0,1,2,3,4,5),index= 0)
        baggage_handling = st.radio("baggage_handling",(0,1,2,3,4,5),index= 0)
        checkin_service = st.radio("checkin_service",(0,1,2,3,4,5),index= 0)
        inflight_service = st.radio("inflight_service",(0,1,2,3,4,5),index= 0)
        cleanliness = st.radio("cleanliness",(0,1,2,3,4,5),index= 0)
        st.markdown("---")

        submitted = st.form_submit_button("predict")

    data_inf = {
        "gender" : gender,
        "customer type" : customer_type,
        "age" : age,
        "type of travel" : type_of_travel,
        "class" : class_flight,
        "inflight wifi service" : inflight_wifi_service, 
        "departure/arrival time convenient" : departure_arrival_time_convenient, 
        "ease of online booking" : ease_of_online_booking, 
        "gate location" : gate_location, 
        "food and drink" : food_and_drink, 
        "online boarding" : online_boarding,
        "seat comfort" : seat_comfort, 
        "inflight entertainment" : inflight_entertainment,
        "on-board service" : on_board_service, 
        "leg room service" : leg_room_service, 
        "baggage handling" : baggage_handling, 
        "checkin service" : checkin_service, 
        "inflight service" : inflight_service, 
        "cleanliness" : cleanliness,
        "flight distance" : flight_distance,
        "departure delay in minutes" : departure_delay_in_minutes,
        "arrival delay in minutes" : arrival_delay_in_minutes
    }

    data_inf = pd.DataFrame([data_inf])
    st.dataframe(data_inf)


    age_category = []
    for x in data_inf["age"]:
        if 6 <= x <= 21:
            age_category.append('Generation z') 
        elif 22 <= x <= 36:
            age_category.append('Millennials')
        elif 37 <= x <= 52:
            age_category.append('Generation X')
        elif 53 <= x <= 73:
            age_category.append('Baby Boomers')
        else:
            age_category.append('Silent Generation')

    data_inf["generation"] = age_category

    if submitted:
        data_inf_num_skew = data_inf[list_num_skew_columns]
        data_inf_cat_nom = data_inf[nom_col_skew]
        data_inf_cat_ord = data_inf[ord_col_skew]
        y_predict_inf = best_pipeline.predict(data_inf)

        st.write("# Satisfaction: ", str(y_predict_inf[0]))

if __name__=="__main__":
    run()