food / app.py
Collapseruin's picture
Update app.py
86a3e9a
raw
history blame
No virus
2.76 kB
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)