File size: 2,738 Bytes
2d7601f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
946312b
2d7601f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
946312b
2d7601f
 
 
e6d7d6b
6d0902b
 
 
 
 
2d7601f
 
 
 
 
 
 
 
 
 
 
 
6d0902b
 
2d7601f
 
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
72
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"),
        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)