Este proyecto tiene como objetivo desarrollar un sistema capaz de predecir la presencia de diabetes en pacientes a partir de notas médicas en texto libre. Combina procesamiento del lenguaje natural (NLP) y aprendizaje automático (ML) para transformar texto clínico no estructurado en variables médicas relevantes y entrenar un modelo predictivo.
Construir un pipeline que:
- Obtenga y almacene datos clínicos de pacientes desde una API.
- Extraiga información médica clave de notas clínicas (HbA1c, glucosa, IMC, tabaquismo…).
- Entrene un modelo de Machine Learning que prediga si un paciente tiene diabetes (
has_diabetes= 0 o 1).
- Python 3.10+
- NLP:
spaCy,medSpaCy - Machine Learning:
scikit-learn,Optuna - Manejo de datos:
pandas,requests - Logging y utilidades:
loguru
-
Descarga de datos: El sistema obtiene datos de pacientes mediante una API (
https://api.hackupm2025.workers.dev/api/v1/patients/train) y los guarda enpatients_train.csv.gzpara su posterior uso sin volver a llamar al servidor. -
Extracción NLP con medSpaCy: Se identifican marcadores clínicos relevantes:
- HbA1c, Glucose, BMI, y sus valores asociados.
- Opcionalmente, tabaquismo y su contexto (negación, histórico, familiar).
- Además, se contemplan historial de enfermedad del corazón e hipertensión.
-
Entrenamiento del modelo:
- Se usa un Random Forest para predecir
has_diabetes. - Se optimizan hiperparámetros mediante Optuna.
- Se usa un Random Forest para predecir
-
Evaluación: Métricas principales: Accuracy, F1-score y ROC-AUC.
.
├── data/
│ └── patients_train.csv.gz # Dataset almacenado localmente
├── notebooks/
│ └── datos.ipynb # Notebook principal del proyecto
├── README.md
└── requirements.txt
-
Instala las dependencias:
pip install -r requirements.txt
-
Ejecuta el notebook principal: Abre
notebooks/datos.ipynby corre todas las celdas secuencialmente:- Descarga y carga de datos
- Extracción NLP
- Entrenamiento y evaluación del modelo
-
Resultado: Se genera un modelo capaz de predecir si un paciente tiene diabetes a partir de su texto clínico.
- Features extraídas automáticamente desde texto médico.
- Modelo entrenado y evaluado sobre datos estructurados.
- Análisis de importancia de variables (por ejemplo, HbA1c y glucosa como factores más determinantes).
Proyecto desarrollado por Compila2 en el marco del Hackathon Roche Diabetes Prediction Challenge 2025.
“De texto clínico desordenado a predicción médica accionable.”