

ESKD Prediction Web Application
This is one of Gabriele’s strongest applied projects because it connects machine-learning research with a deployed medical web application.
The project develops and evaluates models for predicting end-stage kidney disease (ESKD) in IgA nephropathy. It starts from heterogeneous clinical sources, performs cleaning and feature engineering, trains reproducible PyTorch models, compares alternative algorithms, explains predictions with SHAP, and exposes the selected model through a Django-based web application.
Live System
Live site: https://eskd.ing.unimore.it/login
Source code: https://github.com/gabri1997/prediction-eskd
The deployed tool uses a discrete-time survival analysis approach to estimate risk across time intervals. This makes the system more appropriate for censored clinical follow-up data than direct regression on time-to-event.
Modeling Work
The input variables include age, gender, hypertension, proteinuria, creatinine, MEST-C histology, and therapy indicators. Numerical features are normalized with z-score normalization, and class imbalance is handled with weighted sampling or equivalent class weights.
The classification model is a PyTorch MLP with four hidden layers, batch normalization, ELU activations, dropout, Adam optimization, ExponentialLR scheduling, and a proxy AUC pairwise-ranking loss. Experiments use stratified 80/20 splitting plus 10-fold cross-validation on train and validation data, with fixed random seeds for reproducibility.
The report also evaluates alternative tabular models including KNN, CatBoost, XGBoost, and FT-Transformer. The MLP remains competitive, with strong AUC and F1-score, and is selected for deployment in the clinical web application.
Survival Analysis And Validation
For time-to-ESKD modeling, the project implements a discrete-time survival analysis network with five intervals: less than 1 year, 1-3 years, 3-7 years, 7-10 years, and 10 or more years. The model estimates hazard probabilities per interval and uses a masked loss so censored patients contribute only where observed information is available.
The best survival setup reports a C-index of 0.889, with mean performance of 0.866 ± 0.016. External validation is also performed on independent patient cohorts, including a Modena cohort evaluated through the web application.
Why It Matters
This project demonstrates full-stack AI engineering beyond model training: preprocessing, clinical feature design, neural-network training, survival modeling, explainability, reproducible evaluation, external validation, Django application development, and deployment of AI models in a medical decision-support setting.
← Back to projects