|
from flask import Flask, request, render_template, jsonify |
|
import joblib |
|
import pandas as pd |
|
|
|
app = Flask(__name__) |
|
|
|
|
|
lgb_model = joblib.load('lgb_model_cropseason.pkl') |
|
|
|
url='https://drive.google.com/file/d/1_vd4HISZB2h2--CiXKezeWDXHHo2fY23/view?usp=sharing' |
|
data = pd.read_csv('https://drive.usercontent.google.com/download?id={}&export=download&authuser=0&confirm=t'.format(url.split('/')[-2])) |
|
|
|
|
|
unique_states = data['State'].unique() |
|
unique_crops = data['Crop'].unique() |
|
|
|
|
|
season_descriptions = { |
|
'Kharif': 'Kharif season occurs from June to October, associated with the monsoon. Crops are usually sown at the start of the rainy season.', |
|
'Rabi': 'Rabi season spans from October to March, during the winter cropping season, with crops like wheat and barley.', |
|
'Summer': 'Summer season is from April to June, suitable for crops that need warmer temperatures.', |
|
'Winter': 'Winter cropping season occurs from November to February, including cold-weather crops.', |
|
'Whole Year': 'Crops can be grown throughout the year, without seasonal limitations.', |
|
'Autumn': 'Autumn season, from September to November, accommodates crops suited to a post-monsoon environment.' |
|
} |
|
|
|
@app.route('/') |
|
def home(): |
|
return render_template('index.html', states=unique_states, crops=unique_crops, seasons=season_descriptions.keys()) |
|
|
|
@app.route('/filter_districts', methods=['POST']) |
|
def filter_districts(): |
|
state = request.form.get('state') |
|
filtered_districts = data[data['State'] == state]['District'].unique() |
|
return jsonify({'districts': list(filtered_districts)}) |
|
|
|
@app.route('/predict', methods=['POST']) |
|
def predict(): |
|
state = request.form.get('state') |
|
district = request.form.get('district') |
|
crop_year = int(request.form.get('crop_year')) |
|
crop = request.form.get('crop') |
|
area = float(request.form.get('area')) |
|
|
|
input_data = pd.DataFrame({ |
|
'State': [state], |
|
'District': [district], |
|
'Crop_Year': [crop_year], |
|
'Crop': [crop], |
|
'Area': [area] |
|
}) |
|
|
|
input_data['State'] = input_data['State'].astype('category') |
|
input_data['District'] = input_data['District'].astype('category') |
|
input_data['Crop'] = input_data['Crop'].astype('category') |
|
|
|
predicted_season = lgb_model.predict(input_data)[0] |
|
|
|
|
|
print(f"Predicted Season: {predicted_season}") |
|
|
|
|
|
predicted_season_str = str(predicted_season) |
|
|
|
|
|
if predicted_season in season_descriptions: |
|
season_description = season_descriptions[predicted_season] |
|
else: |
|
season_description = 'No description available' |
|
|
|
return render_template('index.html', states=unique_states, crops=unique_crops, seasons=season_descriptions.keys(), |
|
predicted_season=predicted_season, season_description=season_description) |
|
|
|
if __name__ == '__main__': |
|
app.run(port=7860,host='0.0.0.0') |
|
|