|
|
import streamlit as st |
|
|
import hopsworks |
|
|
import pandas as pd |
|
|
import numpy as np |
|
|
from datetime import timedelta, datetime |
|
|
from branca.element import Figure |
|
|
import gradio as gr |
|
|
|
|
|
from functions import decode_features, get_model, get_weather_df, get_weather_data |
|
|
|
|
|
|
|
|
project = hopsworks.login() |
|
|
fs = project.get_feature_store() |
|
|
feature_view = fs.get_feature_view( |
|
|
name = 'oslo_air_quality_fv', |
|
|
version = 1 |
|
|
) |
|
|
model = get_model(project=project, |
|
|
model_name="air_quality_model", |
|
|
evaluation_metric="f1_score", |
|
|
sort_metrics_by="max", |
|
|
version_name=1) |
|
|
|
|
|
|
|
|
|
|
|
def pred(name): |
|
|
str1 = " " |
|
|
for i in range(8): |
|
|
target_date = datetime.today() + timedelta(days=i) |
|
|
target_date = target_date.strftime('%Y-%m-%d') |
|
|
|
|
|
data_weather = [get_weather_data('oslo',target_date)] |
|
|
df_weather = get_weather_df(data_weather) |
|
|
df_weather['conditions'] = df_weather['conditions'].replace(['Rain','Clear','Snow','Partially cloudy','Overcast','Snow, Partially cloudy', |
|
|
'Rain, Partially cloudy','Rain, Overcast','Snow, Overcast', |
|
|
'Snow, Freezing Drizzle/Freezing Rain, Overcast','Snow, Rain', |
|
|
'Snow, Rain, Freezing Drizzle/Freezing Rain, Ice, Overcast', |
|
|
'Snow, Rain, Freezing Drizzle/Freezing Rain, Overcast','Snow, Rain, Ice, Overcast', |
|
|
'Snow, Rain, Overcast','Snow, Rain, Partially cloudy'],[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]) |
|
|
df_weather = df_weather.drop(columns=["date"]).fillna(0) |
|
|
df_weather["aqi"] = 0 |
|
|
preds = model.predict(df_weather) |
|
|
print(preds) |
|
|
if(i!=0): |
|
|
str1 += target_date + " predicted aqi:" + str(int(preds))+"\n" |
|
|
|
|
|
return str1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
demo = gr.Interface(fn=pred,title="Predict AQI of Oslo" ,inputs="text", outputs="text") |
|
|
|
|
|
if __name__ == "__main__": |
|
|
demo.launch() |
|
|
|
|
|
|
|
|
|