Arijit-hazra's picture
Initial commit
a3d05c5
from data_processing import process_data, standardizeX
from api_data import fetch_data
from tensorflow import keras
import pandas as pd
import gradio as gr
import numpy as np
import pickle
import io
#========================================================================================================================
# load the models
#========================================================================================================================
temp_model = keras.models.load_model('results/temp_model.h5')
hum_model = keras.models.load_model('results/hum_model.h5')
#========================================================================================================================
# retrieve mean and std
#========================================================================================================================
scale = pickle.load(open("results/mean_std.pkl", "rb"))
mean = scale["mean"]
std = scale["std"]
temp_mean = mean[0]
temp_std = std[0]
hum_mean = mean[2]
hum_std = std[2]
#========================================================================================================================
# predict function
#========================================================================================================================
def forecast(time):
time = int(time)
if time>9 or time<0:
return "please enter valid time", "0 to 9"
response = fetch_data(9-time)
if response is not None:
# processing data to better fit the model
df = pd.read_csv(io.StringIO(response.content.decode('utf-8')))
df = process_data(df)
X = np.array(df[-24:]).reshape(-1, 24, 16)
X = standardizeX(X, mean, std)
# predictions
temp = temp_model.predict(X)
hum = hum_model.predict(X)
# reverse scaling
temp = (temp[0][0]*temp_std) + temp_mean
hum = (hum[0][0]*hum_std) + hum_mean
# output formatting
temp = str(round(((temp-32)*5)/9, 2)) + " c"
hum = str(round(hum, 2)) + " %"
return temp, hum
else:
return "API access denied"
gr.Interface(fn=forecast,
inputs = gr.Textbox(placeholder="Provide value between 0 to 9, 0 means present, 9 means 9 hrs in future "),
outputs = [gr.Textbox(label="Temperature"),gr.Textbox(label="Humidity")]
).launch()