File size: 2,705 Bytes
22378a1
 
 
 
 
 
 
 
33dedb1
b1c8286
22378a1
 
 
 
 
 
 
 
 
 
 
 
 
 
f04c163
22378a1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f04c163
079f7ce
22378a1
 
d8ebf20
9336671
535acc9
e3a8848
a9d2828
22378a1
 
 
 
 
 
 
e190a12
 
29c51e4
 
22378a1
9336671
46e5ea0
22378a1
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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


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=[gr.Textbox(), gr.Image()]
    
)
demo.launch(debug=True)