from flask import Flask, render_template, request import numpy as np import pickle app = Flask(__name__) # -------- Load Model -------- with open("model.pkl", "rb") as f: model = pickle.load(f) # -------- Load Label Encoder -------- with open("label_encoder.pkl", "rb") as f: le = pickle.load(f) @app.route('/') def home(): return render_template('index.html') @app.route('/predict', methods=['POST']) def predict(): try: # Get values from form N = float(request.form['N']) P = float(request.form['P']) K = float(request.form['K']) temperature = float(request.form['temperature']) humidity = float(request.form['humidity']) ph = float(request.form['ph']) rainfall = float(request.form['rainfall']) # Create input array input_data = np.array([[N, P, K, temperature, humidity, ph, rainfall]]) # Predict encoded label encoded_pred = model.predict(input_data)[0] # Decode original crop name crop_name = le.inverse_transform([encoded_pred])[0] return render_template('result.html', crop=crop_name) except Exception as e: return f"Error occurred: {str(e)}" if __name__ == "__main__": app.run(debug=True)