Spaces:
Sleeping
Sleeping
| from flask import Flask, request, render_template | |
| import pandas as pd | |
| import joblib | |
| import numpy as np | |
| app = Flask(__name__) | |
| # Load model, encoders, and optional scaler | |
| model = joblib.load('placement_model.pkl') | |
| le_placement = joblib.load('le_placement.pkl') | |
| le_internship = joblib.load('le_internship.pkl') | |
| # scaler = joblib.load('scaler.pkl') # Uncomment if you used scaling | |
| # Feature columns in exact order used during training | |
| features = ['IQ', 'Prev_Sem_Result', 'CGPA', 'Academic_Performance', | |
| 'Extra_Curricular_Score', 'Communication_Skills', 'Projects_Completed', | |
| 'Internship_Encoded'] | |
| def index(): | |
| prediction = None | |
| if request.method == 'POST': | |
| try: | |
| # Collect inputs and convert to proper type | |
| IQ = float(request.form['IQ']) | |
| Prev_Sem_Result = float(request.form['Prev_Sem_Result']) | |
| CGPA = float(request.form['CGPA']) | |
| Academic_Performance = float(request.form['Academic_Performance']) | |
| Extra_Curricular_Score = float(request.form['Extra_Curricular_Score']) | |
| Communication_Skills = float(request.form['Communication_Skills']) | |
| Projects_Completed = int(request.form['Projects_Completed']) | |
| Internship_Experience = request.form['Internship_Experience'].strip() | |
| # Handle unknown internship category | |
| if Internship_Experience not in le_internship.classes_: | |
| # Assign most frequent category from training | |
| Internship_Experience = le_internship.classes_[0] | |
| internship_encoded = le_internship.transform([Internship_Experience])[0] | |
| # Prepare DataFrame in the same feature order as training | |
| X = pd.DataFrame([[IQ, Prev_Sem_Result, CGPA, Academic_Performance, | |
| Extra_Curricular_Score, Communication_Skills, | |
| Projects_Completed, internship_encoded]], | |
| columns=features) | |
| # Optional: scale features if model expects it | |
| # X = pd.DataFrame(scaler.transform(X), columns=features) | |
| # Make prediction | |
| pred_encoded = model.predict(X)[0] | |
| pred_label = le_placement.inverse_transform([pred_encoded])[0] | |
| prediction = f'Predicted Placement: {pred_label}' | |
| except ValueError: | |
| prediction = "Invalid input! Please enter numeric values." | |
| except Exception as e: | |
| # Catch any unexpected error | |
| prediction = f"Error in prediction: {str(e)}" | |
| return render_template('index.html', prediction=prediction) | |
| def about(): | |
| return render_template('about.html') | |
| def canva(): | |
| return render_template('canva.html') | |
| if __name__ == '__main__': | |
| app.run(debug=True) | |