File size: 2,332 Bytes
271428d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
from datetime import timedelta, datetime
import hopsworks
import joblib
from functions import *

#Connect to hopsworks and get feature store
project = hopsworks.login()
fs = project.get_feature_store()

#Function for the app
def predict_weather(location):

    #Get future weather data
    weather_data1 = get_weather_df([get_weather_data(location, (datetime.now() + timedelta(days=1)).strftime("%Y-%m-%d"))])
    weather_data2 = get_weather_df([get_weather_data(location, (datetime.now() + timedelta(days=2)).strftime("%Y-%m-%d"))])
    weather_data3 = get_weather_df([get_weather_data(location, (datetime.now() + timedelta(days=3)).strftime("%Y-%m-%d"))])
    weather_data4 = get_weather_df([get_weather_data(location, (datetime.now() + timedelta(days=4)).strftime("%Y-%m-%d"))])
    weather_data5 = get_weather_df([get_weather_data(location, (datetime.now() + timedelta(days=5)).strftime("%Y-%m-%d"))])
    weather_data6 = get_weather_df([get_weather_data(location, (datetime.now() + timedelta(days=6)).strftime("%Y-%m-%d"))])
    weather_data7 = get_weather_df([get_weather_data(location, (datetime.now() + timedelta(days=7)).strftime("%Y-%m-%d"))])

    weather_df = pd.concat([weather_data1, weather_data2, weather_data3, weather_data4, weather_data5, weather_data6, weather_data7], axis=0)

    weather_df = weather_df.drop(columns=["precipprob", "uvindex", "date", "city", "conditions"]).fillna(0)
    weather_df.rename(
        columns={"pressure": "sealevelpressure"}, inplace=True)
    print(weather_df)

    #Get model
    mr = project.get_model_registry()
    model = mr.get_model("gradient_boost_model5", version=1)
    model_dir = model.download()
    model = joblib.load(model_dir + "/model5.pkl")

    #Create predictions
    preds = model.predict(weather_df)
    print(preds)

    list_of_predictions = []
    for x in range(7):
      list_of_predictions.append("Aqi on " + (datetime.now() + timedelta(days=x+1)).strftime('%Y-%m-%d') + ": " +  str(int(preds[x])))

    return list_of_predictions

#Gradio interface
demo = gr.Interface(
    fn=predict_weather,
    title="Future air quality predictor",
    description="Input the name of a location below to get future air quality predictions for that location",
    allow_flagging="never",
    inputs="text",
    outputs="text"
)

demo.launch()