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