Anmol58 commited on
Commit
e8502e1
·
verified ·
1 Parent(s): f9356f0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -35
app.py CHANGED
@@ -1,55 +1,67 @@
1
  from flask import Flask, request, render_template
2
  import pandas as pd
3
  import joblib
 
4
 
5
- # Initialize Flask app
6
  app = Flask(__name__)
7
 
8
- # Load model and encoders
9
  model = joblib.load('placement_model.pkl')
10
  le_placement = joblib.load('le_placement.pkl')
11
  le_internship = joblib.load('le_internship.pkl')
 
12
 
13
- # Feature columns
14
  features = ['IQ', 'Prev_Sem_Result', 'CGPA', 'Academic_Performance',
15
  'Extra_Curricular_Score', 'Communication_Skills', 'Projects_Completed',
16
  'Internship_Encoded']
17
 
18
  @app.route('/', methods=['GET', 'POST'])
19
  def index():
 
20
  if request.method == 'POST':
21
- # Collect input from form
22
- IQ = float(request.form['IQ'])
23
- Prev_Sem_Result = float(request.form['Prev_Sem_Result'])
24
- CGPA = float(request.form['CGPA'])
25
- Academic_Performance = float(request.form['Academic_Performance'])
26
- Extra_Curricular_Score = float(request.form['Extra_Curricular_Score'])
27
- Communication_Skills = float(request.form['Communication_Skills'])
28
- Projects_Completed = int(request.form['Projects_Completed'])
29
- Internship_Experience = request.form['Internship_Experience']
30
-
31
- # Prepare DataFrame
32
- df = pd.DataFrame([{
33
- 'IQ': IQ,
34
- 'Prev_Sem_Result': Prev_Sem_Result,
35
- 'CGPA': CGPA,
36
- 'Academic_Performance': Academic_Performance,
37
- 'Extra_Curricular_Score': Extra_Curricular_Score,
38
- 'Communication_Skills': Communication_Skills,
39
- 'Projects_Completed': Projects_Completed,
40
- 'Internship_Experience': Internship_Experience
41
- }])
42
- df['Internship_Encoded'] = le_internship.transform(df['Internship_Experience'])
43
- X = df[features]
44
-
45
- # Predict
46
- pred_encoded = model.predict(X)[0]
47
- pred_label = le_placement.inverse_transform([pred_encoded])[0]
48
-
49
- return render_template('index.html', prediction=f'Predicted Placement: {pred_label}')
50
-
51
- return render_template('index.html', prediction=None)
52
-
 
 
 
 
 
 
 
 
 
 
53
  @app.route('/about')
54
  def about():
55
  return render_template('about.html')
 
1
  from flask import Flask, request, render_template
2
  import pandas as pd
3
  import joblib
4
+ import numpy as np
5
 
 
6
  app = Flask(__name__)
7
 
8
+ # Load model, encoders, and optional scaler
9
  model = joblib.load('placement_model.pkl')
10
  le_placement = joblib.load('le_placement.pkl')
11
  le_internship = joblib.load('le_internship.pkl')
12
+ # scaler = joblib.load('scaler.pkl') # Uncomment if you used scaling
13
 
14
+ # Feature columns in exact order used during training
15
  features = ['IQ', 'Prev_Sem_Result', 'CGPA', 'Academic_Performance',
16
  'Extra_Curricular_Score', 'Communication_Skills', 'Projects_Completed',
17
  'Internship_Encoded']
18
 
19
  @app.route('/', methods=['GET', 'POST'])
20
  def index():
21
+ prediction = None
22
  if request.method == 'POST':
23
+ try:
24
+ # Collect inputs and convert to proper type
25
+ IQ = float(request.form['IQ'])
26
+ Prev_Sem_Result = float(request.form['Prev_Sem_Result'])
27
+ CGPA = float(request.form['CGPA'])
28
+ Academic_Performance = float(request.form['Academic_Performance'])
29
+ Extra_Curricular_Score = float(request.form['Extra_Curricular_Score'])
30
+ Communication_Skills = float(request.form['Communication_Skills'])
31
+ Projects_Completed = int(request.form['Projects_Completed'])
32
+ Internship_Experience = request.form['Internship_Experience'].strip()
33
+
34
+ # Handle unknown internship category
35
+ if Internship_Experience not in le_internship.classes_:
36
+ # Assign most frequent category from training
37
+ Internship_Experience = le_internship.classes_[0]
38
+
39
+ internship_encoded = le_internship.transform([Internship_Experience])[0]
40
+
41
+ # Prepare DataFrame in the same feature order as training
42
+ X = pd.DataFrame([[IQ, Prev_Sem_Result, CGPA, Academic_Performance,
43
+ Extra_Curricular_Score, Communication_Skills,
44
+ Projects_Completed, internship_encoded]],
45
+ columns=features)
46
+
47
+ # Optional: scale features if model expects it
48
+ # X = pd.DataFrame(scaler.transform(X), columns=features)
49
+
50
+ # Make prediction
51
+ pred_encoded = model.predict(X)[0]
52
+ pred_label = le_placement.inverse_transform([pred_encoded])[0]
53
+
54
+ prediction = f'Predicted Placement: {pred_label}'
55
+
56
+ except ValueError:
57
+ prediction = "Invalid input! Please enter numeric values."
58
+
59
+ except Exception as e:
60
+ # Catch any unexpected error
61
+ prediction = f"Error in prediction: {str(e)}"
62
+
63
+ return render_template('index.html', prediction=prediction)
64
+
65
  @app.route('/about')
66
  def about():
67
  return render_template('about.html')