import gradio as gr from PIL import Image 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_randomforest", version=1) model_dir = model.download() model = joblib.load(model_dir + "/wine_model.pkl") print("Model downloaded") def wine_predictor(fixed_acidity, volatile_acidity, citric_acid, residual_sugar, chlorides,total_sulfur_dioxide, pH, sulphates, alcohol, sulfur_dioxide_ratio, isRedWine): type_red = isRedWine type_white = not type_red df = pd.DataFrame([[fixed_acidity, volatile_acidity, citric_acid, residual_sugar, chlorides,total_sulfur_dioxide, pH, sulphates, alcohol, type_red, type_white, sulfur_dioxide_ratio]], columns=["fixed_acidity", "volatile_acidity", "citric_acid", "residual_sugar", "chlorides","total_sulfur_dioxide", "ph", "sulphates", "alcohol","type_red", "type_white","sulfur_dioxide_ratio"]) res = model.predict(df) wine_quality_url = "https://raw.githubusercontent.com/rogoran/id2223kth.github.io/master/src/serverless-ml-intro/serverless-ml-lab/wine_images/wine-" + str(res[0]) + ".png" print(wine_quality_url) img = Image.open(requests.get(wine_quality_url, stream=True).raw) return img demo = gr.Interface( fn=wine_predictor, title="Wine Predictive Analytics", description="Experiment with sepal/petal lengths/widths to predict which flower it is.", allow_flagging="never", inputs=[ gr.inputs.Number(default=7.0, label="fixed acidity"), gr.inputs.Number(default=0.3, label="volatile acidity"), gr.inputs.Number(default=0.3, label="citric acid"), gr.inputs.Number(default=5.0, label="residual sugar"), gr.inputs.Number(default=0.05, label="chlorides"), gr.inputs.Number(default=114, label="total_sulfur_dioxide"), gr.inputs.Number(default=3.2, label="pH"), gr.inputs.Number(default=0.5, label="sulphates"), gr.inputs.Number(default=10, label="alcohol"), gr.inputs.Number(default=0.3, label="sulfur dioxide free-total ratio"), gr.inputs.Checkbox(label="Red wine?") ], outputs=gr.Image(type="pil").style(height=300, width=200)) demo.launch(debug=True)