food / app.py
Collapseruin's picture
Upload 2 files
2d7601f
raw
history blame
No virus
2.53 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, market, 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[market], commodity_with_names[food], [date]]).reshape(1, -1)
prediction = model.predict(input_data)
return prediction
demo = gr.Interface(
fn = predict_price,
title = "AFG FOOD PRICE PREDICTION",
allow_flagging="never",
inputs=[
gr.Number(label="Year"),
gr.Number(label="Mouth"),
gr.Dropdown(choices=market, label="Market"),
gr.Dropdown(choices=commodity, label="Food Type")
],
outputs="text"
)
demo.launch(debug=True)