|
|
import gradio as gr
|
|
|
import joblib
|
|
|
import numpy as np
|
|
|
|
|
|
|
|
|
model = joblib.load("linear_regression_model.pkl")
|
|
|
scaler = joblib.load("linear_regression_standard_scaler.pkl")
|
|
|
|
|
|
def predict(*inputs):
|
|
|
X = np.array(inputs).reshape(1, -1)
|
|
|
X = scaler.transform(X)
|
|
|
prediction = model.predict(X)
|
|
|
return round(float(prediction[0]), 3)
|
|
|
|
|
|
inputs = [
|
|
|
gr.Number(label="Air Temperature (°C)", minimum=8.10, maximum=39.70, value=25, info="Range: 8.10 - 39.70 °C"),
|
|
|
gr.Number(label="Air Temp Uncertainty (°C)", minimum=0.50, maximum=0.60, value=0.55, info="Range: 0.50 - 0.60 °C"),
|
|
|
gr.Number(label="Wind Direction (°N)", minimum=0.0, maximum=359.0, value=180, info="Range: 0 - 359 °N"),
|
|
|
gr.Number(label="Wind Direction Uncertainty (°N)", minimum=0.0, maximum=4.80, value=1, info="Range: 0.0 - 4.80 °N"),
|
|
|
gr.Number(label="Wind Speed at 3m (m/s)", minimum=0.0, maximum=7.80, value=2, info="Range: 0.0 - 7.80 m/s"),
|
|
|
gr.Number(label="Wind Speed Uncertainty (m/s)", minimum=0.0, maximum=0.10, value=0.05, info="Range: 0.0 - 0.10 m/s"),
|
|
|
gr.Number(label="Wind Speed Std Dev (m/s)", minimum=0.0, maximum=4.50, value=1, info="Range: 0.0 - 4.50 m/s"),
|
|
|
gr.Number(label="DHI (Wh/m²)", minimum=865.8, maximum=6394.6, value=2000, info="Range: 865.8 - 6394.6 Wh/m²"),
|
|
|
gr.Number(label="DHI Uncertainty (Wh/m²)", minimum=37.3, maximum=1344.8, value=200, info="Range: 37.3 - 1344.8 Wh/m²"),
|
|
|
gr.Number(label="Standard Deviation DHI (Wh/m²)", minimum=148.3, maximum=1649.6, value=300, info="Range: 148.3 - 1649.6 Wh/m²"),
|
|
|
gr.Number(label="DNI (Wh/m²)", minimum=0.3, maximum=9517.0, value=3000, info="Range: 0.3 - 9517.0 Wh/m²"),
|
|
|
gr.Number(label="DNI Uncertainty (Wh/m²)", minimum=0.2, maximum=2115.8, value=300, info="Range: 0.2 - 2115.8 Wh/m²"),
|
|
|
gr.Number(label="Standard Deviation DNI (Wh/m²)", minimum=0.4, maximum=3282.2, value=400, info="Range: 0.4 - 3282.2 Wh/m²"),
|
|
|
gr.Number(label="GHI Uncertainty (Wh/m²)", minimum=98.4, maximum=5249.6, value=500, info="Range: 98.4 - 5249.6 Wh/m²"),
|
|
|
gr.Number(label="Standard Deviation GHI (Wh/m²)", minimum=117.6, maximum=1720.7, value=300, info="Range: 117.6 - 1720.7 Wh/m²"),
|
|
|
gr.Number(label="Peak Wind Speed at 3m (m/s)", minimum=0.0, maximum=40.5, value=5, info="Range: 0.0 - 40.5 m/s"),
|
|
|
gr.Number(label="Peak Wind Speed Uncertainty (m/s)", minimum=0.0, maximum=0.20, value=0.05, info="Range: 0.0 - 0.20 m/s"),
|
|
|
gr.Number(label="Relative Humidity (%)", minimum=8.3, maximum=95.9, value=50, info="Range: 8.3 - 95.9 %"),
|
|
|
gr.Number(label="Relative Humidity Uncertainty (%)", minimum=2.8, maximum=3.7, value=3.2, info="Range: 2.8 - 3.7 %"),
|
|
|
gr.Number(label="Barometric Pressure (hPa)", minimum=831.3, maximum=1019.7, value=950, info="Range: 831.3 - 1019.7 hPa"),
|
|
|
gr.Number(label="Barometric Pressure Uncertainty (hPa)", minimum=4.1, maximum=6.2, value=5, info="Range: 4.1 - 6.2 hPa")
|
|
|
]
|
|
|
|
|
|
app = gr.Interface(
|
|
|
fn=predict,
|
|
|
inputs=inputs,
|
|
|
outputs=gr.Number(label="Predicted GHI (Wh/m²)"),
|
|
|
title="🌞 GHI Prediction System",
|
|
|
description="Real-time Global Horizontal Irradiance prediction using Saudi Arabia weather data."
|
|
|
)
|
|
|
|
|
|
app.launch()
|
|
|
|