Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import pickle | |
| import numpy as np | |
| import os | |
| # Load the RandomForest model | |
| working_dir = os.path.dirname(os.path.abspath(__file__)) | |
| model = pickle.load(open(f'{working_dir}/RF_Crop.sav', 'rb')) | |
| # Define the prediction function | |
| def predict_crop(N, P, K, temperature, humidity, pH, rainfall): | |
| user_input = np.array([[N, P, K, temperature, humidity, pH, rainfall]]) | |
| if np.all(user_input == 0): | |
| return "Please enter valid values." | |
| else: | |
| prediction = model.predict(user_input) | |
| crop = prediction[0] | |
| return f"Hey, you should grow **{crop}** based on your soil and environmental factors." | |
| # Gradio UI components | |
| def main_interface(): | |
| with gr.Blocks() as demo: | |
| with gr.Tab("Get Recommendation"): | |
| gr.Markdown("Enter the details about your soil and environmental factors to get a crop recommendation.") | |
| gr.Markdown("**Example Values:** [104, 18, 30, 23.6, 60.3, 6.7, 140.91] or [60, 18, 30, 23.6, 60.3, 8, 40.91]") | |
| N = gr.Number(label="Nitrogen (N)", value=0, precision=0) | |
| P = gr.Number(label="Phosphorus (P)", value=0, precision=0) | |
| K = gr.Number(label="Potassium (K)", value=0, precision=0) | |
| temperature = gr.Number(label="Temperature (°C)", value=0.0) | |
| humidity = gr.Number(label="Humidity (%)", value=0.0) | |
| pH = gr.Number(label="pH", value=0.0) | |
| rainfall = gr.Number(label="Rainfall (mm)", value=0.0) | |
| output = gr.Textbox(label="Recommendation", interactive=False) | |
| gr.Button("Predict").click( | |
| predict_crop, | |
| inputs=[N, P, K, temperature, humidity, pH, rainfall], | |
| outputs=output | |
| ) | |
| return demo | |
| # Run the Gradio app | |
| if __name__ == "__main__": | |
| app = main_interface() | |
| app.launch() | |