import gradio as gr import numpy as np import joblib # ============================== # LOAD MODELS # ============================== scaler = joblib.load("scaler.pkl") le_label = joblib.load("le_label.pkl") le_type = joblib.load("le_type.pkl") rf_label_model = joblib.load("rf_label_model.pkl") rf_type_model = joblib.load("rf_type_model.pkl") # ============================== # PREDICTION FUNCTION # ============================== def predict(N, P, K, temperature, humidity, ph): sample = np.array([[N, P, K, temperature, humidity, ph]]) sample_scaled = scaler.transform(sample) pred_label = le_label.inverse_transform( rf_label_model.predict(sample_scaled) )[0] pred_type = le_type.inverse_transform( rf_type_model.predict(sample_scaled) )[0] return f"🌱 Culture: {pred_label}\n🌍 Soil Type: {pred_type}" # ============================== # GRADIO INTERFACE # ============================== interface = gr.Interface( fn=predict, inputs=[ gr.Number(label="Nitrogen (N)"), gr.Number(label="Phosphorus (P)"), gr.Number(label="Potassium (K)"), gr.Number(label="Temperature (°C)"), gr.Number(label="Humidity (%)"), gr.Number(label="pH"), ], outputs="text", title="Crop & Soil Prediction Model", description="Prediction using Random Forest model trained in Kaggle" ) interface.launch()