← WorkMachine Learning · Healthcare2025

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
Disease Outbreak Prediction cover
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

Links