File size: 5,546 Bytes
a601cd3
 
 
 
e8c8ffd
a601cd3
 
e8c8ffd
a601cd3
 
 
95724f7
a601cd3
 
e8c8ffd
a601cd3
e8c8ffd
1543b55
4bf0388
bde0954
 
 
a601cd3
e8c8ffd
 
9b2f05a
 
 
e8c8ffd
b22e202
22f203b
 
9163b5a
a601cd3
e8c8ffd
a601cd3
 
e8c8ffd
 
4bf0388
a601cd3
e8c8ffd
 
 
 
a601cd3
 
e8c8ffd
c22ad31
e8c8ffd
 
 
 
 
 
c22ad31
 
a601cd3
4bf0388
a601cd3
84897f6
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
import gradio as gr
import numpy as np
from PIL import Image
import requests
from feature_engineering import feat_eng
import hopsworks
import joblib
import pandas as pd

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

mr = project.get_model_registry()
model = mr.get_model("titanic_modal_simple_classifier", version=1)
model_dir = model.download()
model = joblib.load(model_dir + "/titanic_model.pkl")
print(model_dir)
leo_url = "data:image/jpeg;base64,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"
rose_url = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSGoi8okN1Fw6tYE7k-0H-wnMabl1e3NBNPpQ&usqp=CAU"
# leo_url = "https://media.tenor.com/FghTtX3ZgbAAAAAC/drowning-leo.gif"
# rose_url = "https://media4.giphy.com/media/6A5zBPtbknIGY/giphy.gif?cid=ecf05e477syp5zeoheii45de76uicvgu0nuegojslz3zgodt&rid=giphy.gif&ct=g"

def titanic(pclass, name, sex, age, sibsp, parch, ticket, fare, cabin, embarked):
    df_pre = pd.DataFrame({"PassengerId":[-1], "Pclass": [pclass], "Name": [name], "Sex": [sex], "Age": [age], "SibSp": [sibsp], "Parch": [parch], "Ticket": [ticket], "Fare": [fare], "Cabin": [cabin], "Embarked": [embarked]})
    namechanges = {("sex", "Sex"), ("age", "Age"), ("sibsp", "SibSp"), ("parch", "Parch"), ("embarked", "Embarked"), ("title", "Title")}
    

    df_post = feat_eng(df_pre)
    print(df_post)
    # for tuple in namechanges:
    #     df_post[tuple[0]] = df_post[tuple[1]]
    # print(df_post)
    # 'res' is a list of predictions returned as the label.
    res = model.predict(df_post)[0]
    # We add '[0]' to the result of the transformed 'res', because 'res' is a list, and we only want 
    # the first element.
    
    img = Image.open(leo_url) if res == 0 else Image.open(rose_url)
    return res
        
demo = gr.Interface(    
    fn=titanic,
    title="Titanic Survival Predictive Analytics",
    description="Experiment with Titanic Passenger data to predict survival",
    allow_flagging="never",
    inputs=[
        gr.inputs.Number(default=1.0, label="pclass, [1,2,3]"),
        gr.inputs.Textbox(default="Mr. Anton", label="name"),
        gr.inputs.Textbox(default="male", label="sex, male or female"),
        gr.inputs.Number(default=25, label="age"),
        gr.inputs.Number(default=2, label="sibsb"),
        gr.inputs.Number(default=2, label="parch"),
        gr.inputs.Textbox(default="blabla", label="Ticket"),
        gr.inputs.Number(default=200, label="Fare"),
        gr.inputs.Textbox(default="A123", label="Cabin"),
        gr.inputs.Textbox(default="S", label="Embarked: [S, C, Q]")
        ],
    outputs=gr.Number())

demo.launch()