def addEmployee(): if not request.json or not 'name' in request.json: return jsonify({"result": False, "msg": "Failed to Add Employee!"}) # Get Prediction for the Employee Turnover - Create Dataframe df = pd.DataFrame() print(request.json) df['Age'] = [request.json['age']] df['DistanceFromHome'] = [request.json['distFromHome']] df['Children'] = [request.json['children']] df['Num CompaniesWorked'] = [request.json['numCompaniesWorked']] df['Training '] = [request.json['trainingHours']] df['Years At Company'] = [request.json['yearsAtCompany']] df['Years In Current Role'] = [request.json['yearsInCurrentRole']] df['YearsSinceLastPromotion'] = [request.json['yearsSinceLastPromo']] df['YearsWithCurSupervisor'] = [request.json['yearsWithCurrSupervisor']] df['StandardHours'] = [request.json['standardHours']] if (request.json['department'] == '1'): df['Department_Cutting'] = [1] df['Department_Pressing'] = [0] df['Department_Sewing'] = [0] if (request.json['department'] == '2'): df['Department_Cutting'] = [0] df['Department_Pressing'] = [1] df['Department_Sewing'] = [0] if (request.json['department'] == '3'): df['Department_Cutting'] = [0] df['Department_Pressing'] = [0] df['Department_Sewing'] = [1] if (request.json['gender'] == '1'): df['Gender_Female'] = [1] df['Gender_Male'] = [0] if (request.json['gender'] == '2'): df['Gender_Female'] = [0] df['Gender_Male'] = [1] if (request.json['jobSatisfaction'] == '1'): df['Job_Satisfaction_1'] = [1] df['Job_Satisfaction_2'] = [0] df['Job_Satisfaction_3'] = [0] df['Job_Satisfaction_4'] = [0] if (request.json['jobSatisfaction'] == '2'): df['Job_Satisfaction_1'] = [0] df['Job_Satisfaction_2'] = [1] df['Job_Satisfaction_3'] = [0] df['Job_Satisfaction_4'] = [0] if (request.json['jobSatisfaction'] == '3'): df['Job_Satisfaction_1'] = [0] df['Job_Satisfaction_2'] = [0] df['Job_Satisfaction_3'] = [1] df['Job_Satisfaction_4'] = [0] if (request.json['jobSatisfaction'] == '4'): df['Job_Satisfaction_1'] = [0] df['Job_Satisfaction_2'] = [0] df['Job_Satisfaction_3'] = [0] df['Job_Satisfaction_4'] = [1] if (request.json['maritalStatus'] == '0'): df['Martial_Status_Single'] = [1] df['Martial_Status_Married'] = [0] df['Martial_Status_Divorced'] = [0] if (request.json['maritalStatus'] == '1'): df['Martial_Status_Single'] = [0] df['Martial_Status_Married'] = [1] df['Martial_Status_Divorced'] = [0] if (request.json['maritalStatus'] == '2'): df['Martial_Status_Single'] = [0] df['Martial_Status_Married'] = [0] df['Martial_Status_Divorced'] = [1] if (request.json['salary'] == '0'): df['Salary_Low'] = [1] df['Salary_Average'] = [0] df['Salary_High'] = [0] if (request.json['salary'] == '1'): df['Salary_Low'] = [0] df['Salary_Average'] = [1] df['Salary_High'] = [0] if (request.json['salary'] == '2'): df['Salary_Low'] = [0] df['Salary_Average'] = [0] df['Salary_High'] = [1] if (request.json['overtime'] == '0'): df['OverTime_No'] = [1] df['OverTime_Yes'] = [0] if (request.json['overtime'] == '1'): df['OverTime_No'] = [0] df['OverTime_Yes'] = [1] if (request.json['absenteeism'] == '0'): df['Absenteeism Rate_Low'] = [1] df['Absenteeism Rate_Medium'] = [0] df['Absenteeism Rate_High'] = [0] if (request.json['absenteeism'] == '1'): df['Absenteeism Rate_Low'] = [0] df['Absenteeism Rate_Medium'] = [1] df['Absenteeism Rate_High'] = [0] if (request.json['absenteeism'] == '2'): df['Absenteeism Rate_Low'] = [0] df['Absenteeism Rate_Medium'] = [0] df['Absenteeism Rate_High'] = [1] if (request.json['performanceRating'] == 'A'): df['PerformanceRating_A'] = [1] df['PerformanceRating_B'] = [0] df['PerformanceRating_C'] = [0] df['PerformanceRating_D'] = [0] if (request.json['performanceRating'] == 'B'): df['PerformanceRating_A'] = [0] df['PerformanceRating_B'] = [1] df['PerformanceRating_C'] = [0] df['PerformanceRating_D'] = [0] if (request.json['performanceRating'] == 'C'): df['PerformanceRating_A'] = [0] df['PerformanceRating_B'] = [0] df['PerformanceRating_C'] = [1] df['PerformanceRating_D'] = [0] if (request.json['performanceRating'] == 'D'): df['PerformanceRating_A'] = [0] df['PerformanceRating_B'] = [0] df['PerformanceRating_C'] = [0] df['PerformanceRating_D'] = [1] if (request.json['education'] == '1'): df['Education_1'] = [1] df['Education_2'] = [0] df['Education_3'] = [0] df['Education_4'] = [0] if (request.json['education'] == '2'): df['Education_1'] = [0] df['Education_2'] = [1] df['Education_3'] = [0] df['Education_4'] = [0] if (request.json['education'] == '3'): df['Education_1'] = [0] df['Education_2'] = [0] df['Education_3'] = [1] df['Education_4'] = [0] if (request.json['education'] == '4'): df['Education_1'] = [0] df['Education_2'] = [0] df['Education_3'] = [0] df['Education_4'] = [1] if (request.json['workLifeBalance'] == '1'): df['Work Life Balance_1'] = [1] df['Work Life Balance_2'] = [0] df['Work Life Balance_3'] = [0] df['Work Life Balance_4'] = [0] if (request.json['workLifeBalance'] == '2'): df['Work Life Balance_1'] = [0] df['Work Life Balance_2'] = [1] df['Work Life Balance_3'] = [0] df['Work Life Balance_4'] = [0] if (request.json['workLifeBalance'] == '3'): df['Work Life Balance_1'] = [0] df['Work Life Balance_2'] = [0] df['Work Life Balance_3'] = [1] df['Work Life Balance_4'] = [0] if (request.json['workLifeBalance'] == '4'): df['Work Life Balance_1'] = [0] df['Work Life Balance_2'] = [0] df['Work Life Balance_3'] = [0] df['Work Life Balance_4'] = [1] # Load the XGBoost Model param_dist = { 'objective': 'binary:logistic', 'n_estimators': 180, 'eta': 0.1, 'gamma': 0.05, 'max_depth': 3 } clf = xgb.XGBModel(**param_dist) clf.load_model(TURNOVER_MODEL) # Predict Turnover from the XGBoost Model prediction = clf.predict(df.to_numpy()) print(prediction) # Get Turnover Drivers # explainer = lime.lime_tabular(df.to_numpy(), feature_names=df.columns, class_names=[0,1], kernel_width=3) # Load the SVR Model svr = pickle.load(open(TIMETILLTURNOVER_MODEL, 'rb')) # Predict Time Till Turnover timetillturnover = svr.predict(df.to_numpy())[0] employee = Employee(request.json['name'], request.json['age'], request.json['department'], request.json['phone'], request.json['email'], request.json['address'], request.json['distFromHome'], request.json['education'], request.json['gender'], request.json['jobSatisfaction'], request.json['maritalStatus'], request.json['children'], request.json['salary'], request.json['numCompaniesWorked'], request.json['overtime'], request.json['performanceRating'], request.json['standardHours'], request.json['trainingHours'], request.json['workLifeBalance'], request.json['yearsAtCompany'], request.json['yearsInCurrentRole'], request.json['yearsSinceLastPromo'], request.json['yearsWithCurrSupervisor'], request.json['absenteeism'], request.json['recruitmentDate'], request.json['loggedInId'], turnover=prediction[0], timetillturnover=timetillturnover) result = Employee.addEmployee(employee, mysql) return jsonify({"result": True, "msg": "Successfully Added Employee!"})