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

# Load calibrated model
data = joblib.load("calibrator_diabetes.joblib")
model = data["calibrated_model"]
features = data["features"]

# 35-feature input vector (13 base + 22 trend features)
# Base: age, sex_encoded, bmi, hba1c, creatinine, albumin, egfr,
#        wbc, rbc, hemoglobin, hematocrit, systolic_bp, diastolic_bp
# Trend: {param}_slope, {param}_delta for each lab parameter
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%}")  # ~94%

SHAP Explainability

import shap

raw = joblib.load("xgb_diabetes.joblib")
explainer = shap.TreeExplainer(raw["model"])
shap_values = explainer.shap_values(X)
# Positive SHAP = pushes toward high risk
# Negative SHAP = pushes toward low risk

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:

  1. Download NHANES 2017-2018 from CDC
  2. Merge 8 tables, compute eGFR (CKD-EPI 2021), impute missing values
  3. Construct labels (ADA, KDIGO, WHO criteria)
  4. Synthetic longitudinal augmentation (15% of patients)
  5. Train XGBoost with stratified 5-fold CV
  6. Platt scaling calibration
  7. Full evaluation (AUROC, PR-AUC, Brier, subgroup analysis)
  8. Download BC5CDR corpus for NER
  9. 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}
}
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support