wine / app.py
pierrelf's picture
Fix image URL conversion from int to str
c21e5ab
raw
history blame
2.26 kB
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()