File size: 3,844 Bytes
e0ba984
 
 
 
 
 
 
 
 
 
 
effff23
45450a9
3579fac
e0ba984
ad65e12
e0ba984
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3d24d8f
e0ba984
3d24d8f
e0ba984
3d24d8f
e0ba984
3d24d8f
e0ba984
3d24d8f
e0ba984
3d24d8f
e0ba984
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2312791
e0ba984
 
8862399
e0ba984
 
 
 
 
 
3d24d8f
e0ba984
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
import numpy as np
from PIL import Image
import requests

import hopsworks
import joblib

project = hopsworks.login()
fs = project.get_feature_store()


mr = project.get_model_registry()
model = mr.get_model("titanic_model", version=6)
model_dir = model.download()
model = joblib.load(model_dir + "/titanic_modal.pkl")


def titanic(pclass, sex, age, fare, embarked, familysize, appellation, cabin):
    input_list = []
    # PClass
    input_list.append(int(pclass))

    # Gender
    if sex == "Male":
        input_list.append(0)
    else:
        input_list.append(1)

    # Age
    input_list.append(age)

    # Fare
    input_list.append(fare)

    # Embarked
    if embarked == "S":
        input_list.append(0)
    elif embarked == "C":
        input_list.append(1)
    elif embarked == "Q":
        input_list.append(2)

    # Family Size
    input_list.append(familysize)

    # Appellation
    if appellation == "master":
        input_list.append(1,0,0,0,0,0)
    elif appellation == "miss":
        input_list.append(0,1,0,0,0,0)
    elif appellation == "mr":
        input_list.append(0,0,1,0,0,0)
    elif appellation == "mrs":
        input_list.append(0,0,0,1,0,0)
    elif appellation == "officer":
        input_list.append(0,0,0,0,1,0)
    elif appellation == "royalty":
        input_list.append(0,0,0,0,0,1)

    # Cabin
    if cabin == "A":
        input_list.append(1).append(0).append(0).append(0).append(0).append(0).append(0).append(0).append(0)
    elif cabin == "B":
        input_list.append(0).append(1).append(0).append(0).append(0).append(0).append(0).append(0).append(0)
    elif cabin == "C":
        input_list.append(0).append(0).append(1).append(0).append(0).append(0).append(0).append(0).append(0)
    elif cabin == "D":
        input_list.append(0).append(0).append(0).append(1).append(0).append(0).append(0).append(0).append(0)
    elif cabin == "E":
        input_list.append(0).append(0).append(0).append(0).append(1).append(0).append(0).append(0).append(0)
    elif cabin == "F":
        input_list.append(0).append(0).append(0).append(0).append(0).append(1).append(0).append(0).append(0)
    elif cabin == "G":
        input_list.append(0).append(0).append(0).append(0).append(0).append(0).append(1).append(0).append(0)
    elif cabin == "T":
        input_list.append(0).append(0).append(0).append(0).append(0).append(0).append(0).append(1).append(0)
    else:
        input_list.append(0).append(0).append(0).append(0).append(0).append(0).append(0).append(0).append(1)


    # 'res' is a list of predictions returned as the label.
    res = model.predict(np.asarray(input_list).reshape(1, -1))
    res = res.astype(int)
    # We add '[0]' to the result of the transformed 'res', because 'res' is a list, and we only want
    # the first element.
    titanic_url = "https://github.com/Qinglin2000/ID2223/blob/main/" + str(res[0]) + ".png?raw=true"
    img = Image.open(requests.get(titanic_url, stream=True).raw)
    return img


demo = gr.Interface(
    fn=titanic,
    title="Titanic Predictive Analytics",
    description="Experiment with titanic dataset values.",
    allow_flagging="never",
    inputs=[
        gr.Dropdown(choices=["1", "2", "3"], label="PClass", value="1"),
        gr.Radio(choices=["Male", "Female"], label="Gender", value="Male"),
        gr.inputs.Number(default=30.0, label="Age"),
        gr.inputs.Number(default=40.99, label="Fare"),
        gr.Dropdown(choices=["S","C","Q"], label="Embarked", value="S"),
        gr.Number(label="Family Size", precision=0, value=1),
        gr.Dropdown(choices=["master", "miss", "mr", "mrs", "officer", "royalty"], label="Appellation", value="master"),
        gr.Dropdown(choices=["A", "B", "C", "D", "E", "F", "G", "T", "U"], label="Cabin", value="A"),
    ],
    outputs=gr.Image(type="pil"))
demo.launch()