placement / api.py
harshiv's picture
Upload 5 files
94a95c8
raw
history blame
2.78 kB
from flask import Flask, request, jsonify
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn import svm
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import GradientBoostingClassifier
from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score
import joblib
import pickle
app = Flask(__name__)
@app.route('/predict', methods=['POST'])
def predict():
data = request.get_json()
# Load trained models
with open('rf_hacathon_fullstk.pkl', 'rb') as f1:
rf_fullstk = pickle.load(f1)
with open('rf_hacathon_prodengg.pkl', 'rb') as f2:
rf_prodengg = pickle.load(f2)
with open('rf_hacathon_mkt.pkl', 'rb') as f3:
rf_mkt = pickle.load(f3)
# Extract input features
new_data_fullstk = pd.DataFrame({
'degree_p': data['degree_p'],
'internship': data['internship'],
'DSA': data['DSA'],
'java': data['java'],
}, index=[0])
new_data_prodengg = pd.DataFrame({
'degree_p': data['degree_p'],
'internship': data['internship'],
'management': data['management'],
'leadership': data['leadership'],
}, index=[0])
new_data_mkt = pd.DataFrame({
'degree_p': data['degree_p'],
'internship': data['internship'],
'communication': data['communication'],
'sales': data['sales'],
}, index=[0])
# Make predictions
p_prodeng = rf_prodengg.predict(new_data_prodengg)
prob_prdeng = rf_prodengg.predict_proba(new_data_prodengg)
if p_prodeng == 1:
pred_prodeng = 'Placed'
prob_prodeng = prob_prdeng[0][1]
else:
pred_prodeng = 'Not-placed'
prob_prodeng = prob_prdeng[0][0]
p_fstk = rf_fullstk.predict(new_data_fullstk)
prob_fstk = rf_fullstk.predict_proba(new_data_fullstk)
if p_fstk == 1:
pred_fstk = 'Placed'
prob_fstk = prob_fstk[0][1]
else:
pred_fstk = 'Not-placed'
prob_fstk = prob_fstk[0][0]
p_mkt = rf_mkt.predict(new_data_mkt)
prob_mkt = rf_mkt.predict_proba(new_data_mkt)
if p_mkt == 1:
pred_mkt = 'Placed'
prob_mkt = prob_mkt[0][1]
else:
pred_mkt = 'Not-placed'
prob_mkt = prob_mkt[0][0]
result = {
'prediction_fullstk': pred_fstk,
'probability_fullstk': prob_fstk,
'prediction_prodengg': pred_prodeng,
'probability_prodengg': prob_prodeng,
'prediction_mkt': pred_mkt,
'probability_mkt': prob_mkt
}
return jsonify(result)
if __name__ == '__main__':
app.run(debug=True)