Spaces:
Build error
Build error
| import gradio as gr | |
| import pandas as pd | |
| import joblib | |
| # Load model | |
| best_model = joblib.load("crop_recommendation_model.pkl") | |
| y_labels = best_model.classes_ | |
| # Prediction function | |
| def predict_crop(N, P, K, temperature, humidity, ph, rainfall): | |
| input_df = pd.DataFrame([[N, P, K, temperature, humidity, ph, rainfall]], | |
| columns=['N', 'P', 'K', 'temperature', 'humidity', 'ph', 'rainfall']) | |
| prediction = best_model.predict(input_df)[0] | |
| probabilities = best_model.predict_proba(input_df)[0] | |
| sorted_probs = sorted(enumerate(probabilities), key=lambda x: x[1], reverse=True) | |
| best_crop = prediction | |
| alternatives = [y_labels[i] for i, _ in sorted_probs[1:4]] | |
| return f"✅ Best Crop: {best_crop}", f"✨ Alternatives: {', '.join(alternatives)}" | |
| # Gradio Interface with api_name enabled | |
| interface = gr.Interface( | |
| fn=predict_crop, | |
| inputs=[ | |
| gr.Number(label="Nitrogen (N)"), | |
| gr.Number(label="Phosphorous (P)"), | |
| gr.Number(label="Potassium (K)"), | |
| gr.Number(label="Temperature (°C)"), | |
| gr.Number(label="Humidity (%)"), | |
| gr.Number(label="pH"), | |
| gr.Number(label="Rainfall (mm)") | |
| ], | |
| outputs=[ | |
| gr.Textbox(label="Best Crop"), | |
| gr.Textbox(label="Alternative Crops") | |
| ], | |
| title="🌱 Smart Crop Recommender", | |
| description="Predicts the best crop and top 3 alternatives based on your soil and climate data.", | |
| api_name="/api/predict" # 👈 This enables API endpoint! | |
| ) | |
| interface.launch(share=True) |