import gradio as gr import joblib import numpy as np # Load trained artifacts model = joblib.load("linear_regression_model.pkl") scaler = joblib.load("linear_regression_standard_scaler.pkl") # remove if you didn't use scaling def predict(*inputs): X = np.array(inputs).reshape(1, -1) X = scaler.transform(X) # remove if no scaling 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()