MedIntel β Clinical Risk Prediction Models
Three calibrated XGBoost models for predicting risk of Diabetes, Chronic Kidney Disease (CKD), and Anemia from standard laboratory blood tests.
Model Details
| Property |
Value |
| Algorithm |
XGBoost (Gradient Boosting) |
| Calibration |
Platt Scaling (CalibratedClassifierCV) |
| Features |
35 (13 base + 22 trend) |
| Training Data |
NHANES 2017-2018 (~5,000 adults) |
| Explainability |
SHAP TreeExplainer |
| Framework |
scikit-learn, XGBoost, joblib |
Performance (Test Set, n=4,909)
| Model |
AUROC |
Brier |
F1 |
Threshold |
| Diabetes |
1.0000 |
0.0077 |
0.9918 |
0.402 |
| CKD |
0.9999 |
0.0026 |
0.9962 |
0.465 |
| Anemia |
1.0000 |
0.0010 |
0.9981 |
0.892 |
Files
| File |
Description |
Size |
xgb_diabetes.joblib |
Raw XGBoost diabetes model |
~563 KB |
xgb_ckd.joblib |
Raw XGBoost CKD model |
~449 KB |
xgb_anemia.joblib |
Raw XGBoost anemia model |
~279 KB |
calibrator_diabetes.joblib |
Platt-calibrated diabetes model |
~3.3 MB |
calibrator_ckd.joblib |
Platt-calibrated CKD model |
~2.6 MB |
calibrator_anemia.joblib |
Platt-calibrated anemia model |
~1.7 MB |
evaluation_report.txt |
Full evaluation metrics |
β |
Usage
import joblib
import numpy as np
data = joblib.load("calibrator_diabetes.joblib")
model = data["calibrated_model"]
features = data["features"]
X = np.array([[50, 0, 31.4, 8.2, 1.0, 4.0, 91.7, 7.2, 4.9, 14.5, 43.0, 142, 88,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
prob = model.predict_proba(X)[:, 1]
print(f"Diabetes risk: {prob[0]:.1%}")
SHAP Explainability
import shap
raw = joblib.load("xgb_diabetes.joblib")
explainer = shap.TreeExplainer(raw["model"])
shap_values = explainer.shap_values(X)
Feature Importance (by SHAP)
| Diabetes |
CKD |
Anemia |
| HbA1c |
eGFR |
Hemoglobin |
| Age |
RBC |
Hematocrit |
| BMI |
BMI |
Sex |
| Creatinine |
Creatinine |
Albumin |
| WBC |
Age |
RBC |
Training Pipeline
Fully reproducible 9-step pipeline in the MedIntel repository:
- Download NHANES 2017-2018 from CDC
- Merge 8 tables, compute eGFR (CKD-EPI 2021), impute missing values
- Construct labels (ADA, KDIGO, WHO criteria)
- Synthetic longitudinal augmentation (15% of patients)
- Train XGBoost with stratified 5-fold CV
- Platt scaling calibration
- Full evaluation (AUROC, PR-AUC, Brier, subgroup analysis)
- Download BC5CDR corpus for NER
- Fine-tune BioBERT for biomedical NER
Intended Use
- Clinical decision support for healthcare providers
- Risk screening in telemedicine settings
- Research on multi-disease prediction
Limitations
- Trained on US population (NHANES) β may not generalize globally
- Trend features are synthetic (NHANES is cross-sectional)
- Not a substitute for clinical diagnosis
Citation
@software{medintel2026,
title={MedIntel: AI-Powered Clinical Risk Intelligence Platform},
author={Jha, Sushantak Parashar},
year={2026},
url={https://github.com/Sushantak17/MedIntel}
}