File size: 2,388 Bytes
a2e34d4 75c76b9 e12f110 09e3794 8c61977 e12f110 75c76b9 09e3794 75c76b9 e12f110 75c76b9 09e3794 e12f110 75c76b9 e12f110 75c76b9 e12f110 75c76b9 e12f110 09e3794 75c76b9 e12f110 75c76b9 e12f110 75c76b9 e12f110 75c76b9 e12f110 75c76b9 09e3794 fa9ee6a 75c76b9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
import gradio as gr
import pandas as pd
import lightgbm as lgb
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
# Load dataset
url = "https://raw.githubusercontent.com/Pushpinder-Singh06/CSV-Files/refs/heads/main/crop_cleaned%20data.csv "
data = pd.read_csv(url)
# Define the crops in Punjabi
crops = [
'rice',
'maize',
'chickpea',
'kidneybeans',
'pigeonpeas',
'mothbeans',
'mungbean',
'blackgram',
'lentil',
'pomegranate',
'banana',
'mango',
'watermelon',
'muskmelon',
'orange',
'papaya',
'coconut',
'cotton',
'jute',
'coffee'
]
# Fit the label encoder
le = LabelEncoder()
le.fit(data['label']) # ✅ Fit first
data['crop_encoded'] = le.transform(data['label']) # ✅ Then transform
# Prepare for reverse prediction
reverse_X = data[['crop_encoded']]
y_cols = ['N', 'P', 'K', 'temperature', 'humidity', 'ph', 'rainfall']
# Train reverse models
reverse_models = {}
for col in y_cols:
y = data[col]
X_train, X_test, y_train, y_test = train_test_split(reverse_X, y, test_size=0.2, random_state=42)
model_r = lgb.LGBMRegressor()
model_r.fit(X_train, y_train)
reverse_models[col] = model_r
# Mapping from crop name to encoded value
label_to_encoded = {label: le.transform([label])[0] for label in le.classes_}
# Reverse prediction function
def predict_crop_parameters(crop_name):
crop_name = crop_name.strip()
if crop_name not in label_to_encoded:
return f"❌ No data found for '<b>{crop_name}</b>'."
encoded_value = label_to_encoded[crop_name]
input_data = [[encoded_value]]
predictions = {}
for param, model_r in reverse_models.items():
predicted_value = model_r.predict(input_data)[0]
predictions[param] = round(predicted_value, 2)
formatted_output = ""
for k, v in predictions.items():
formatted_output += f"<b>{k}</b>: {v}<br>"
return formatted_output
with gr.Blocks() as demo:
gr.Markdown("# 🌾 **AgroVision: Crop-Based Parameters**")
crop_input = gr.Dropdown(choices=crops, label="🌿 Select Crop Name")
result_output = gr.Markdown(label="🧪 Recommended Parameters")
run_btn = gr.Button("➡️ Predict Parameters")
run_btn.click(fn=predict_crop_parameters, inputs=[crop_input], outputs=[result_output])
demo.launch() |