Skip to content

omarcal24/humandsapp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏢 Predicción de Desgaste Laboral en IBM

Proyecto de Machine Learning para predecir el desgaste (attrition) de empleados de IBM

Desarrollado por Pablo Martín y Omar Calderón para el Demoday de Saturdays AI — Edición Bilbao


📋 Descripción

Esta aplicación web interactiva, construida con Streamlit, analiza un dataset de Recursos Humanos de IBM con el objetivo de predecir qué empleados tienen mayor probabilidad de abandonar la empresa (employee attrition). El proyecto recorre de forma visual y didáctica todo el pipeline de Machine Learning: desde la exploración del dato hasta la predicción y simulación de escenarios "what-if".

¿Qué hace exactamente?

  1. Exploración de datos: Muestra las primeras filas, estadísticas descriptivas y valores únicos del dataset IBM-HR (1.470 empleados, 35 variables).
  2. Preprocesamiento:
    • Elimina columnas irrelevantes (EmployeeCount, StandardHours, Over18, EmployeeNumber).
    • Separa la variable objetivo (Attrition) de las features.
    • Convierte variables categóricas a dummies con pd.get_dummies().
  3. Balanceo de clases: Aplica SMOTE (Synthetic Minority Oversampling Technique) para equilibrar las clases de attrition, ya que los casos positivos son minoría.
  4. Entrenamiento del modelo: Entrena un Random Forest Classifier sobre el dataset balanceado.
  5. Distribución de probabilidades: Visualiza un histograma con las probabilidades de desgaste de todos los empleados.
  6. Simulación "What-if": Selecciona un candidato con alta probabilidad de desgaste (>60%) y simula mejoras en sus condiciones laborales (aumento salarial del 10% y eliminación de horas extra) para ver cómo cambia su probabilidad de abandono.

🛠️ Tecnologías

Componente Tecnología
Frontend / App Web Streamlit
Lenguaje Python
ML / Modelado scikit-learn (RandomForestClassifier)
Balanceo de clases imbalanced-learn (SMOTE)
Manipulación de datos Pandas, NumPy
Visualización Matplotlib, Seaborn
Despliegue Heroku

📁 Estructura del Proyecto

├── app.py                 # Aplicación principal de Streamlit
├── data/
│   └── IBM-HR.csv         # Dataset de IBM HR (1.470 empleados)
├── requirements.txt       # Dependencias de Python
├── setup.sh               # Configuración de Streamlit para Heroku
├── Procfile               # Proceso web para Heroku
└── README.md

🚀 Instalación y Ejecución Local

Prerrequisitos

  • Python 3.7+
  • pip

Pasos

# 1. Clonar el repositorio
git clone <URL_DEL_REPOSITORIO>
cd <NOMBRE_DEL_PROYECTO>

# 2. Instalar dependencias
pip install -r requirements.txt

# 3. Ejecutar la aplicación
streamlit run app.py

La aplicación se abrirá automáticamente en http://localhost:8501.


📊 Dataset

El dataset IBM HR Analytics Employee Attrition & Performance contiene 1.470 registros de empleados ficticios con 35 variables, incluyendo:

  • Demográficas: Edad, Género, Estado Civil, Distancia al trabajo
  • Laborales: Departamento, Rol, Nivel de cargo, Años en la empresa, Horas extra
  • Económicas: Ingreso mensual, Incremento salarial, Stock Options
  • Satisfacción: Satisfacción ambiental, laboral, relacional, balance vida-trabajo
  • Variable objetivo: Attrition (Yes/No) — si el empleado dejó la empresa

🔍 Flujo del Modelo

Dataset IBM-HR (1.470 registros)
        │
        ▼
  Limpieza de datos (drop columnas irrelevantes)
        │
        ▼
  Separación X / y (features vs. Attrition)
        │
        ▼
  One-Hot Encoding (get_dummies)
        │
        ▼
  SMOTE (balanceo de clases)
        │
        ▼
  Random Forest Classifier (entrenamiento)
        │
        ▼
  Predicción de probabilidades
        │
        ▼
  Simulación What-If (ajustar salario + horas extra)

💡 Caso de Uso: Simulación What-If

El proyecto demuestra cómo RRHH podría usar este modelo para retener talento:

  1. Se identifica un empleado con probabilidad de desgaste superior al 60%.
  2. Se simulan cambios en sus condiciones: un aumento salarial del 10% y la eliminación de horas extra.
  3. Se recalcula la probabilidad de desgaste con las nuevas condiciones.
  4. El resultado muestra si estos cambios serían efectivos para retener al empleado.

📄 Dependencias

numpy
pandas
matplotlib
sklearn
seaborn
imblearn
streamlit==0.84.0
opencv-python-headless

👥 Autores

Proyecto realizado en el marco de Saturdays AI — Edición Bilbao.


📝 Licencia

Proyecto educativo desarrollado para el Demoday de Saturdays AI.

About

🏢 ML web app to predict IBM employee attrition using Random Forest + SMOTE, with what-if simulation · Saturdays AI Bilbao

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors