|
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 |
|
|
|
|
|
|
|
|
|
temp_model = keras.models.load_model('results/temp_model.h5') |
|
hum_model = keras.models.load_model('results/hum_model.h5') |
|
|
|
|
|
|
|
|
|
|
|
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] |
|
|
|
|
|
|
|
|
|
|
|
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: |
|
|
|
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) |
|
|
|
|
|
temp = temp_model.predict(X) |
|
hum = hum_model.predict(X) |
|
|
|
|
|
temp = (temp[0][0]*temp_std) + temp_mean |
|
hum = (hum[0][0]*hum_std) + hum_mean |
|
|
|
|
|
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() |
|
|
|
|
|
|