File size: 4,084 Bytes
b54ed8a
 
 
 
 
 
5de273e
b54ed8a
 
 
 
 
 
f87a2b5
b54ed8a
 
 
 
 
 
e54658c
59ed707
e54658c
59ed707
fd937f8
 
 
 
 
 
 
 
 
 
b248a2b
b54ed8a
e1d3a84
395ac5a
 
 
 
 
 
 
 
 
 
f87a2b5
 
 
 
 
 
 
 
 
 
 
 
59ed707
b54ed8a
 
 
 
 
bc3ec44
b54ed8a
 
 
 
 
 
 
e54658c
b54ed8a
 
 
 
 
 
 
 
 
 
 
 
0a8a4c3
 
b54ed8a
76505dd
fc78036
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
import gradio as gr
from PIL import Image
import requests
import hopsworks
import joblib
import pandas as pd
from sklearn.preprocessing import StandardScaler , MinMaxScaler

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


mr = project.get_model_registry()
model = mr.get_model("wine_model", version=5)
model_dir = model.download()
model = joblib.load(model_dir + "/wine_model.pkl")
print("Model downloaded")

def wine_quality(type, fixed_acidity, volatile_acidity, citric_acid, residual_sugar, chlorides, free_sulfur_dioxide, total_sulfur_dioxide, density, pH, sulphates, alcohol):
    print("Calling function")
    if(type == "red"):
        type = 0
    else:
        type = 1
    fixed_acidity = float(fixed_acidity)
    volatile_acidity = float(volatile_acidity)
    citric_acid = float(citric_acid)
    residual_sugar = float(residual_sugar)
    chlorides = float(chlorides)
    free_sulfur_dioxide = float(free_sulfur_dioxide)
    total_sulfur_dioxide = float(total_sulfur_dioxide)
    density = float(density)
    pH = float(pH)
    sulphates = float(sulphates)
    alcohol = float(alcohol)    
    df = pd.DataFrame([[type, fixed_acidity, volatile_acidity, citric_acid, residual_sugar, chlorides, free_sulfur_dioxide, total_sulfur_dioxide, density, pH, sulphates, alcohol]], 
                      columns=['type', 'fixed_acidity', 'volatile_acidity', 'citric_acid', 'residual_sugar', 'chlorides', 'free_sulfur_dioxide', 'total_sulfur_dioxide', 'density', 'ph', 'sulphates', 'alcohol'])
    df['ratio_sulfur_dioxide'] = df['free_sulfur_dioxide']/df['total_sulfur_dioxide']
    df['skewness'] = df.skew(axis = 1, skipna = True)
    df['kurtosis'] = df.kurtosis(axis = 1, skipna = True)
    df['mean'] = df.mean(axis = 1, skipna = True)
    df['median'] = df.median(axis = 1, skipna = True)
    df['variance'] = df.var(axis = 1, skipna = True)
    df['std'] = df.std(axis = 1, skipna = True)
    df['cv'] = df.std(axis = 1, skipna = True)/df.mean(axis = 1, skipna = True)
    df['range'] = df.max(axis = 1, skipna = True) - df.min(axis = 1, skipna = True)
    df['iqr'] = df.quantile(q=0.75, axis=1) - df.quantile(q=0.25, axis=1)
    mean = [4.30745506e-01,1.32617810e+00,1.64965628e-01,1.45381413e-01,
     4.75798474e+00,3.50417288e-02,1.77480338e+01,5.65175045e+01,
     2.99844222e-03,2.00322077e-01,1.49339305e-01,1.19261996e+00,
     1.24635133e-01,5.33233574e-01,3.10338694e+00,4.96250939e+00,
     5.59999753e-01,8.11946649e+02,1.90343823e+02,5.51748235e-01,
     8.11930146e+02,3.76404974e+00]
    std= [7.53886409e-01,7.20547176e+00,3.39272741e-01,3.18574727e-01,
     5.44265045e+00,5.60243189e-02,3.05253194e+01,1.15744574e+02,
     9.94696634e-01,3.21393720e+00,5.30888102e-01,1.04918008e+01,
     2.86767940e-01,3.00198372e+00,1.03539209e+01,1.26173180e+01,
     2.70951027e+00,9.71837196e+02,2.28237885e+02,2.73221508e+00,
     9.71806016e+02,1.29150916e+01]
    df = (df-mean)/std
    print("Predicting")
    print(df)
    # 'res' is a list of predictions returned as the label.
    res = model.predict(df) 
    print(res)
    return res[0]
        
demo = gr.Interface(
    fn=wine_quality,
    title="Wine Quality Prediction",
    description="Predict the quality of wine based on its features.",
    allow_flagging="never",
    inputs=[
        gr.Dropdown(["red", "white"], label="type"),
        gr.inputs.Number(default=5.0, label="fixed acidity"),
        gr.inputs.Number(default=5.0, label="volatile acidity"),
        gr.inputs.Number(default=5.0, label="citric acid"),
        gr.inputs.Number(default=5.0, label="residual sugar"),
        gr.inputs.Number(default=5.0, label="chlorides"),
        gr.inputs.Number(default=5.0, label="free sulfur dioxide"),
        gr.inputs.Number(default=5.0, label="total sulfur dioxide"),
        gr.inputs.Number(default=5.0, label="density"),
        gr.inputs.Number(default=5.0, label="pH"),
        gr.inputs.Number(default=5.0, label="sulphates"),
        gr.inputs.Number(default=5.0, label="alcohol")
        ],
    outputs=gr.outputs.Label(label="Quality")
    )

demo.launch(debug=True)