wine / app.py
pierrelf's picture
Fix image URL conversion from int to str
c21e5ab
import gradio as gr
import hopsworks
import joblib
import pandas as pd
from PIL import Image
import requests
project = hopsworks.login()
fs = project.get_feature_store()
mr = project.get_model_registry()
model = mr.get_model("wine_model")
model_dir = model.download()
model = joblib.load(model_dir + "/wine_model.pkl")
print("Model downloaded")
def wine(fixed_acidity, volatile_acidity, citric_acid, residual_sugar, chlorides, total_sulfur_dioxide, ph, sulphates, alcohol, type):
if type == "red":
type = 0
else:
type = 1
print("Calling function")
df = pd.DataFrame([[fixed_acidity, volatile_acidity, citric_acid, residual_sugar, chlorides, total_sulfur_dioxide, ph, sulphates, alcohol, type]], columns=['fixed_acidity', 'volatile_acidity', 'citric_acid', 'residual_sugar', 'chlorides', 'total_sulfur_dioxide', 'ph', 'sulphates', 'alcohol', 'type'])
print("Predicting")
print(df)
# 'res' is a list of predictions returned as the label.
res = model.predict(df)
# We add '[0]' to the result of the transformed 'res', because 'res' is a list, and we only want
# the first element.
print(res)
url = "https://raw.githubusercontent.com/pierrelefevre/scalable-ml/main/lab1/task2/img/" + str(int(res[0])) + ".png"
img = Image.open(requests.get(url, stream=True).raw)
return [res[0], img]
iface = gr.Interface(
fn=wine,
title="Wine Quality Prediction",
description="Predict the quality of a wine based on its features.",
allow_flagging="never",
inputs=[
gr.Number(label="fixed_acidity", value=7.293673375526557),
gr.Number(label="volatile_acidity", value=0.3),
gr.Number(label="citric_acid", value=0.31),
gr.Number(label="residual_sugar", value=2.2),
gr.Number(label="chlorides", value=0.036),
gr.Number(label="total_sulfur_dioxide", value=95.04095161413584),
gr.Number(label="ph", value=3.3185304801763884),
gr.Number(label="sulphates", value=0.6691971203117211),
gr.Number(label="alcohol", value=13.1),
gr.Radio(["red", "white"], label="type", value="white")
],
outputs=[gr.Number(label="quality"),
gr.Image(type="pil")])
iface.launch()