import gradio as gr from PIL import Image import requests import hopsworks import joblib import pandas as pd import numpy as np project = hopsworks.login(project='suyiw000') fs = project.get_feature_store() mf = project.get_model_registry() model = mf.get_model("food_model", version=1) model_dir = model.download() model = joblib.load(model_dir + "/food_model.pkl") print("Model downloaded") market = ['Badakhshan', 'Badghis', 'Baghlan', 'Balkh', 'Bamyan', 'Daykundi', 'Farah', 'Faryab', 'Ghazni', 'Ghor', 'Hilmand', 'Hirat', 'Jawzjan' 'Kabul', 'Kandahar', 'Kapisa', 'Khost', 'Kunar', 'Kunduz', 'Laghman', 'Logar', 'Maidan Wardak', 'Nangarhar', 'Nimroz', 'Nuristan', 'Paktika', 'Paktya', 'Panjsher', 'Parwan', 'Samangan', 'Sar-e-Pul', 'Takhar', 'Uruzgan', 'Zabul'] commodity = ['Bread', 'Oil_cooking', 'Pulses', 'Rice_high', 'Rice_low', 'Salt', 'Sugar', 'Wheat', 'Wheatflour_high', 'Wheatflour_low'] def predict_price(year, month, markets, food): market_empty = np.zeros(34) market_name = ['Badakhshan', 'Badghis', 'Baghlan', 'Balkh', 'Bamyan', 'Daykundi', 'Farah', 'Faryab', 'Ghazni', 'Ghor', 'Hilmand', 'Hirat', 'Jawzjan' 'Kabul', 'Kandahar', 'Kapisa', 'Khost', 'Kunar', 'Kunduz', 'Laghman', 'Logar', 'Maidan Wardak', 'Nangarhar', 'Nimroz', 'Nuristan', 'Paktika', 'Paktya', 'Panjsher', 'Parwan', 'Samangan', 'Sar-e-Pul', 'Takhar', 'Uruzgan', 'Zabul'] market = [] for i in range(34): temp_market = market_empty.copy() temp_market[i] = 1.0 market.append(temp_market) commodity_empty = np.zeros(10) commodity_name = ['Bread', 'Oil_cooking', 'Pulses', 'Rice_high', 'Rice_low', 'Salt', 'Sugar', 'Wheat', 'Wheatflour_high', 'Wheatflour_low'] commodity=[] for i in range(10): commodity_array = commodity_empty.copy() commodity_array[i] = 1.0 commodity.append(commodity_array) commodity_with_names = dict(zip(commodity_name, commodity)) arrays_with_names = dict(zip(market_name, market)) date = ((year*10000+month*100+15)-20200000)/100000 input_data = np.concatenate([arrays_with_names[markets], commodity_with_names[food], [date]]).reshape(1, -1) prediction = model.predict(input_data) food_url = "https://raw.githubusercontent.com/TimiUU/wine/main/" + food + ".png" img = Image.open(requests.get(food_url, stream=True).raw) return prediction, img #return prediction, food_url demo = gr.Interface( fn = predict_price, title = "AFG FOOD PRICE PREDICTION", allow_flagging="never", inputs=[ gr.Number(label="Year",value=2024), gr.Number(label="Mouth",value=1), gr.Dropdown(choices=market, label="Market"), gr.Dropdown(choices=commodity, label="Food Type") ], outputs=[gr.Textbox(), gr.Image()] ) demo.launch(debug=True)