Redve's picture
revert
76505dd
Raw History Blame Contribute Delete
4.08 kB
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)