HUMANDS / app.py
devssaturdays's picture
Update app.py
4f59ecc
import gradio as gr
import pandas as pd
from joblib import load
def humands(Sex,Age,Married,Monthlyincome,TotalWorkingYears,DistanceFromHome,Overtime,YearsAtCompany,NumCompaniesWorked):
model = load('modelo_entrenado.pkl')
df = pd.DataFrame.from_dict(
{
"MonthlyIncome" : [Monthlyincome],
"Age" : [Age],
"TotalWorkingYears" : [TotalWorkingYears],
"DailyRate" : [Monthlyincome*2/30],
"HourlyRate" : [Monthlyincome*2/1640],
"DistanceFromHome" : [DistanceFromHome],
"OverTime_Yes" : [1 if Overtime else 0],
"OverTime_No" : [1 if not Overtime else 0],
"YearsAtCompany" : [YearsAtCompany],
"MonthlyRate" : [Monthlyincome*2],
"NumCompaniesWorked" : [NumCompaniesWorked],
"PercentSalaryHike" : [15],
"YearsInCurrentRole" : [YearsAtCompany-1],
"YearsWithCurrManager" : [YearsAtCompany-1],
"StockOptionLevel" : [1],
"YearsSinceLastPromotion" : [YearsAtCompany-1],
"JobSatisfaction" : [2],
"JobLevel" : [3],
"TrainingTimesLastYear" : [0],
"EnvironmentSatisfaction" : [2],
"WorkLifeBalance" : [2],
"MaritalStatus_Single" : [1 if Married==0 else 0],
"JobInvolvement" : [2],
"RelationshipSatisfaction" : [Married+1],
"Education" : [2],
"BusinessTravel_Travel_Frequently" : [1 if Overtime else 0],
"JobRole_Sales Representative" : [0],
"EducationField_Medical" : [0],
"Department_Sales" : [0],
"JobRole_Laboratory Technician" : [0],
"Department_Research & Development" : [1],
"Gender_Female" : [1 if Sex==0 else 0],
"MaritalStatus_Married" : [1 if Married==1 else 0],
"JobRole_Sales Executive" : [0],
"EducationField_Technical Degree" : [1],
"Gender_Male" : [1 if Sex==1 else 0],
"EducationField_Life Sciences" : [0],
"BusinessTravel_Travel_Rarely" : [0],
"MaritalStatus_Divorced" : [1 if Married==2 else 0],
"JobRole_Research Scientist" : [1],
"EducationField_Marketing" : [0],
"PerformanceRating" : [3],
"EducationField_Other" : [0],
"JobRole_Human Resources" : [0],
"BusinessTravel_Non-Travel" : [1 if not Overtime else 0],
"Department_Human Resources" : [0],
"JobRole_Manufacturing Director" : [0],
"JobRole_Healthcare Representative" : [0],
"EducationField_Human Resources" : [0],
"JobRole_Manager" : [0],
"JobRole_Research Director" : [0],
}
)
columnas = ['Age', 'DailyRate', 'DistanceFromHome', 'Education',
'EnvironmentSatisfaction', 'HourlyRate', 'JobInvolvement', 'JobLevel',
'JobSatisfaction', 'MonthlyIncome', 'MonthlyRate', 'NumCompaniesWorked',
'PercentSalaryHike', 'PerformanceRating', 'RelationshipSatisfaction',
'StockOptionLevel', 'TotalWorkingYears', 'TrainingTimesLastYear',
'WorkLifeBalance', 'YearsAtCompany', 'YearsInCurrentRole',
'YearsSinceLastPromotion', 'YearsWithCurrManager',
'BusinessTravel_Non-Travel', 'BusinessTravel_Travel_Frequently',
'BusinessTravel_Travel_Rarely', 'Department_Human Resources',
'Department_Research & Development', 'Department_Sales',
'EducationField_Human Resources', 'EducationField_Life Sciences',
'EducationField_Marketing', 'EducationField_Medical',
'EducationField_Other', 'EducationField_Technical Degree',
'Gender_Female', 'Gender_Male', 'JobRole_Healthcare Representative',
'JobRole_Human Resources', 'JobRole_Laboratory Technician',
'JobRole_Manager', 'JobRole_Manufacturing Director',
'JobRole_Research Director', 'JobRole_Research Scientist',
'JobRole_Sales Executive', 'JobRole_Sales Representative',
'MaritalStatus_Divorced', 'MaritalStatus_Married',
'MaritalStatus_Single', 'OverTime_No', 'OverTime_Yes']
df = df.reindex(columns=columnas)
pred = model.predict(df)[0]
if pred == "Yes":
predicted1="Estamos ante un trabajador con alto nivel de desgaste del trabajo. Habría que plantearse alguna acción."
predicted2="stressed_image.jpg"
else:
predicted1="Estamos ante un trabajador con un nivel bajo de desgaste del trabajo. Se ha de seguir así."
predicted2="ok_image2.jpg"
return [predicted1,predicted2]
iface = gr.Interface(
humands,
[
gr.Radio(["Mujer","Hombre"],type = "index",label="Sexo"),
gr.inputs.Slider(18,70,1,label="Edad del trabajador"),
gr.Radio(["Soltero","Casado","Divorciado"],type = "index",label="Esstado civil:"),
gr.inputs.Slider(1000,20000,1,label="Ingresos mensuales del trabajador"),
gr.inputs.Slider(0,40,1,label="Total de años trabajados del trabajador"),
gr.inputs.Slider(0,100,1,label="Distancia del trabajo al domicilio en Km"),
gr.Checkbox(label="¿Realiza horas extras habitualmente?"),
gr.inputs.Slider(0,40,1,label="Años del trabajador en la empresa"),
gr.inputs.Slider(0,40,1,label="Numero de empresas en las que ha estado el trabajador"),
],
["text",gr.Image(type='filepath')],
examples=[
["Mujer",33,"Soltero",2917,9,1,False,9,1],
["Hombre",42,"Casado",3111,16,5,False,7,3],
["Hombre",50,"Divorciado",1732,20,50,True,3,3],
["Mujer",25,"Soltero",2556,6,58,True,2,4],
],
interpretation="default",
title = 'HUMANDS: Inteligencia artificial para empleados',
description = 'Uno de los motivos por los que las organizaciones pierden a sus empleados es la insatisfacción laboral, por ello, nuestro objetivo es predecir el verdadero nivel de desgaste de los empleados dentro de una organización mediante Inteligencia Artificial. Para saber más: https://saturdays.ai/2021/12/31/inteligencia-artificial-empleados/',
theme = 'peach'
)
iface.launch()