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)