Spaces:
Sleeping
Sleeping
File size: 2,446 Bytes
1ae03dd 227357c b1a1a2f ba2ab2f 1ae03dd 60999f9 1ae03dd a6e15b1 60999f9 ef98bc7 ba2ab2f ac54e04 a6e15b1 1ae03dd a6e15b1 36e720f 1ae03dd a6e15b1 1ae03dd a6e15b1 1ae03dd a6e15b1 1ae03dd a6e15b1 1ae03dd a6e15b1 1ae03dd b1a1a2f 60999f9 1ae03dd a6e15b1 b1a1a2f 1ae03dd 227357c b1a1a2f 1ae03dd a6e15b1 1ae03dd a6e15b1 b1a1a2f 60999f9 1ae03dd |
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 |
import streamlit as st
import hopsworks
import joblib
import pandas as pd
import datetime
from functions import get_weather_data_weekly, data_encoder, get_aplevel, get_color
from PIL import Image
def fancy_header(text, font_size=24):
res = f'<p style="color:#ff5f27; font-size: {font_size}px;text-align:center">{text}</p>'
st.markdown(res, unsafe_allow_html=True)
st.set_page_config(layout="wide")
st.title('Air Quality Prediction Project for Vienna! 🌩')
vienna_image = Image.open('vienna.jpg')
st.image(vienna_image, use_column_width='auto', caption='Vienna')
st.write(36 * "-")
st.markdown("# This is a final project in the course ID2223 Scalable Machine Learning and Deep Learning :computer:")
st.markdown("My task was to predict the Air Quality Index (AQI) for one city (I choose Vienna) based on different weather data (pressure, snow-and cloud-coverage, temperature, etc.).")
st.markdown("For the full list of weather data, please click [here](https://visualcrossing.com/resources/documentation/weather-api/timeline-weather-api)")
fancy_header('\n Connecting to Hopsworks Feature Store...')
project = hopsworks.login()
st.write("Successfully connected!✔️")
st.write(36 * "-")
fancy_header('\n Collecting the weather data from Vienna...')
today = datetime.date.today()
city = "vienna"
weekly_data = get_weather_data_weekly(city, today)
st.write("Successfully collected!✔️")
st.write(36 * "-")
fancy_header("Loading the fitted XGBoost model...")
mr = project.get_model_registry()
model = mr.get_best_model("aqi_model", "rmse", "min")
model_dir = model.download()
model = joblib.load(model_dir + "/aqi_model.pkl")
st.write("Succesfully loaded!✔️")
st.sidebar.write("-" * 36)
fancy_header("Making AQI predictions for the next 7 days")
preds = model.predict(data_encoder(weekly_data)).astype(int)
air_pollution_level = ['Good', 'Moderate', 'Unhealthy for sensitive Groups','Unhealthy' ,'Very Unhealthy', 'Hazardous']
poll_level = get_aplevel(preds.T.reshape(-1, 1), air_pollution_level)
next_week_datetime = [today + datetime.timedelta(days=d) for d in range(7)]
next_week_str = [f"{days.strftime('%A')}, {days.strftime('%Y-%m-%d')}" for days in next_week_datetime]
df = pd.DataFrame(data=[preds, poll_level], index=["AQI", "Air pollution level"], columns=next_week_str)
st.write("Here they are!")
st.dataframe(df.style.apply(get_color, subset=(["Air pollution level"], slice(None))))
st.button("Re-run") |