Disease Outbreak Prediction
Multi-disease prediction system covering diabetes, heart disease, and Parkinson's, served through a single Streamlit application.
- Role
- ML engineer — TechSaksham / AICTE
- Year
- 2025
- Stack
- Python · Scikit-learn · Streamlit · Logistic Regression · SVM
- Links
- GitHub ↗

01
Overview
An interactive tool that lets a user enter clinical parameters and returns a risk prediction for three diseases using three separately trained scikit-learn models. Built during the AICTE / TechSaksham AI: Transformative Learning internship.
02
Problem statement
Early screening tools for chronic disease often exist as isolated notebooks that a non-technical user can never touch. The goal was to expose three well-known clinical datasets (Pima Indians, Cleveland heart, Parkinson's voice) behind one unified interface.
03
Architecture
- 01Three separate models, each trained and evaluated in its own notebook: logistic regression for diabetes, SVM with RBF kernel for heart disease, and a tuned SVM for Parkinson's voice features.
- 02Model artifacts serialized with pickle and lazy-loaded by the Streamlit app on first request.
- 03Single Streamlit multi-page app with one page per disease, sharing common validation and result-rendering components.
04
Tech stack
- Python
- Scikit-learn
- Streamlit
- Logistic Regression
- SVM
05
Features
- Three prediction workflows in one interface
- Input validation with sensible medical bounds per field
- Probability-style confidence output rather than raw class labels
06
Challenges
- Feature scales varied wildly across datasets — solved with a StandardScaler saved alongside each model.
- Small dataset sizes made cross-validation results noisy; used stratified k-fold with fixed seeds for comparable numbers.
- Streamlit reruns on every widget change; had to be careful not to reload models on each interaction.
07
Results
- Three working classifiers with acceptable accuracy across held-out splits
- Single deployable app that runs anywhere Python does
- Clean template for adding more diseases without touching the UI
08
Lessons learned
- Persisting scalers next to models is not optional — training-time preprocessing must ship with inference.
- Streamlit's caching primitives are underrated for keeping demos snappy.
- Small models trained carefully beat larger models trained lazily.
09