|
|
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')
|
|
|
|