wine / app.py
AdrianHR's picture
refactor: change the outputs to be a value and not a list with the value.
54da62a
Raw History Blame Contribute Delete
2.31 kB
import gradio as gr
from PIL import Image, ImageDraw, ImageFont
import requests
import hopsworks
import joblib
import pandas as pd
project = hopsworks.login()
fs = project.get_feature_store()
mr = project.get_model_registry()
model = mr.get_model("wine_model", version=1)
model_dir = model.download()
model = joblib.load(model_dir + "/wine_model.pkl")
print("Model downloaded")
columns = ['type_white','fixed_acidity','volatile_acidity','citric_acid','residual_sugar','chlorides','free_sulfur_dioxide','total_sulfur_dioxide','density','alcohol']
def get_image_with_text(text):
img = Image.new(size=(200,200),mode="RGBA", color='white')
draw = ImageDraw.Draw(img)
font = ImageFont.load_default(size=150)
draw.text((50,0), text, font=font, fill=(0, 0, 0, 0))
return img
def wine(type_white,fixed_acidity,volatile_acidity,citric_acid,residual_sugar,chlorides,free_sulfur_dioxide,total_sulfur_dioxide,density,alcohol):
print("Calling function")
# df = pd.DataFrame([[sepal_length],[sepal_width],[petal_length],[petal_width]],
df = pd.DataFrame([[type_white,fixed_acidity,volatile_acidity,citric_acid,residual_sugar,chlorides,free_sulfur_dioxide,total_sulfur_dioxide,density,alcohol]],
columns=columns)
print("Predicting")
print(df)
res = model.predict(df)
res_text = f'the predicted quality of your wine was {res[0]}'
print(res)
img = get_image_with_text(f'{res[0]}')
return img,res_text
demo = gr.Interface(
fn=wine,
title="Wine Quality Predictive Analytics",
description="Experiment with the features to predict which quality the wine is.",
allow_flagging="never",
inputs=[
gr.Number(value=1.0, label='is_white_wine (1/0)'),
gr.Number(value=7.0, label=columns[1]),
gr.Number(value=0.20, label=columns[2]),
gr.Number(value=0.25, label=columns[3]),
gr.Number(value=9.0, label=columns[4]),
gr.Number(value=0.05, label=columns[5]),
gr.Number(value=40.0, label=columns[6]),
gr.Number(value=150.0, label=columns[7]),
gr.Number(value=0.9950, label=columns[8]),
gr.Number(value=10.0, label=columns[9]),
],
outputs=[
gr.Image(type="pil"),
gr.Text(),
]
)
demo.launch(debug=True)