dilpreet77's picture
Update app.py
285feb0 verified
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)