|
|
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([[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) |