import gradio as gr import numpy as np from sklearn.preprocessing import LabelEncoder from xgboost import XGBClassifier import pickle # Load the trained model and label encoder model = pickle.load(open('crop_recommendation_model.pkl', 'rb')) le = pickle.load(open('label_encoder.pkl', 'rb')) def recommend_crop(nitrogen, phosphorus, potassium, temperature, humidity, ph, rainfall): # Prepare the input sample as a 2D array X_sample = np.array([[nitrogen, phosphorus, potassium, temperature, humidity, ph, rainfall]]) # Predict crop recommendations y_pred_sample = model.predict(X_sample) # Decode the prediction back to crop name crops_pred = le.inverse_transform(y_pred_sample) return crops_pred[0] # Return the predicted crop name # Example inputs for the Gradio app examples = [ [90, 42, 43, 20, 82, 6.5, 202], [80, 30, 40, 25, 60, 6.8, 150], [95, 55, 50, 28, 70, 7.0, 120] ] # Create the Gradio interface interface = gr.Interface( fn=recommend_crop, inputs=[ gr.Number(label="Nitrogen - Ratio of Nitrogen in the soil"), gr.Number(label="Phosphorus - Ratio of Phosphorus in the soil"), gr.Number(label="Potassium - Ratio of Potassium in the soil"), gr.Number(label="Temperature - In degrees Celsius"), gr.Number(label="Humidity - Relative humidity in %"), gr.Number(label="pH Value - pH value of the soil"), gr.Number(label="Rainfall - Rainfall in mm") ], outputs=gr.Textbox(label="Recommended Crop"), examples=examples, title="Acres - CR", description="Acres Crop Recommendation recommends the best crop to plant based on soil and climate conditions." ) # Launch the app if __name__ == "__main__": interface.launch()