Spaces:
Sleeping
Sleeping
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) |