Redve's picture
revert
76505dd
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)