food / app.py
Collapseruin's picture
Update app.py
86a3e9a
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)