# robust-enigma/cardiovascular-disease-prediction architecture

> Architecture diagram of the GitHub repository robust-enigma/cardiovascular-disease-prediction, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/robust-enigma/cardiovascular-disease-prediction
- Repository: https://github.com/robust-enigma/cardiovascular-disease-prediction

## Overview

This repository is a Streamlit application for exploring uploaded cardiovascular-disease data and comparing classifiers for heart-disease prediction. Its workflow includes target normalization and train/test splitting, optional SMOTEENN balancing, individual or multi-model training, and metric/confusion-matrix visualizations; it also offers exploratory plots. The sampled code shows these responsibilities in one file. The excerpts do not establish how the bundled CSV is used or expose all UI routing, so those connections are omitted.

Main entry points: [`project.py`](https://github.com/robust-enigma/cardiovascular-disease-prediction/blob/main/project.py) (Data preparation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Data exploration"]
  node_uploaded_data["Uploaded dataset"]
  node_exploration["Exploratory plots<br/>[project.py]"]
end

subgraph group_modeling["Modeling"]
  node_preparation["Data preparation<br/>[project.py]"]
  node_balancing["SMOTEENN balancing<br/>[project.py]"]
  node_selected_model["Selected classifier<br/>[project.py]"]
  node_model_comparison["Six-model comparison<br/>[project.py]"]
end

subgraph group_results["Evaluation and results"]
  node_metrics["Classification metrics<br/>[project.py]"]
  node_confusion_plot["Confusion matrix plot<br/>[project.py]"]
  node_result_display["Streamlit results<br/>[project.py]"]
end

node_user(("App user"))

node_user -->|"uploads"| node_uploaded_data
node_uploaded_data -->|"reads"| node_exploration
node_uploaded_data -->|"reads"| node_preparation
node_preparation -->|"splits data"| node_selected_model
node_preparation -->|"supplies split"| node_model_comparison
node_balancing -->|"resamples data"| node_model_comparison
node_selected_model -->|"evaluates predictions"| node_metrics
node_model_comparison -->|"plots predictions"| node_confusion_plot
node_metrics -->|"displays scores"| node_result_display
node_confusion_plot -->|"renders plot"| node_result_display
node_exploration -->|"renders plots"| node_result_display

click node_exploration "https://github.com/robust-enigma/cardiovascular-disease-prediction/blob/main/project.py"
click node_preparation "https://github.com/robust-enigma/cardiovascular-disease-prediction/blob/main/project.py"
click node_balancing "https://github.com/robust-enigma/cardiovascular-disease-prediction/blob/main/project.py"
click node_selected_model "https://github.com/robust-enigma/cardiovascular-disease-prediction/blob/main/project.py"
click node_model_comparison "https://github.com/robust-enigma/cardiovascular-disease-prediction/blob/main/project.py"
click node_metrics "https://github.com/robust-enigma/cardiovascular-disease-prediction/blob/main/project.py"
click node_confusion_plot "https://github.com/robust-enigma/cardiovascular-disease-prediction/blob/main/project.py"
click node_result_display "https://github.com/robust-enigma/cardiovascular-disease-prediction/blob/main/project.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_uploaded_data,node_exploration,node_user toneBlue
class node_preparation,node_balancing,node_selected_model,node_model_comparison toneAmber
class node_metrics,node_confusion_plot,node_result_display toneMint
```

## Components

### Data exploration

- **Uploaded dataset**
- [Exploratory plots](https://github.com/robust-enigma/cardiovascular-disease-prediction/blob/main/project.py): `project.py`

### Modeling

- [Data preparation](https://github.com/robust-enigma/cardiovascular-disease-prediction/blob/main/project.py): `project.py`
- [SMOTEENN balancing](https://github.com/robust-enigma/cardiovascular-disease-prediction/blob/main/project.py): `project.py`
- [Selected classifier](https://github.com/robust-enigma/cardiovascular-disease-prediction/blob/main/project.py): `project.py`
- [Six-model comparison](https://github.com/robust-enigma/cardiovascular-disease-prediction/blob/main/project.py): `project.py`

### Evaluation and results

- [Classification metrics](https://github.com/robust-enigma/cardiovascular-disease-prediction/blob/main/project.py): `project.py`
- [Confusion matrix plot](https://github.com/robust-enigma/cardiovascular-disease-prediction/blob/main/project.py): `project.py`
- [Streamlit results](https://github.com/robust-enigma/cardiovascular-disease-prediction/blob/main/project.py): `project.py`

### Other components

- **App user**

## Connections

- App user → Uploaded dataset: uploads
- Uploaded dataset → Exploratory plots: reads (evidence: `project.py`)
- Uploaded dataset → Data preparation: reads (evidence: `project.py`)
- Data preparation → Selected classifier: splits data (evidence: `project.py`)
- Data preparation → Six-model comparison: supplies split (evidence: `project.py`)
- SMOTEENN balancing → Six-model comparison: resamples data (evidence: `project.py`)
- Selected classifier → Classification metrics: evaluates predictions (evidence: `project.py`)
- Six-model comparison → Confusion matrix plot: plots predictions (evidence: `project.py`)
- Classification metrics → Streamlit results: displays scores (evidence: `project.py`)
- Confusion matrix plot → Streamlit results: renders plot (evidence: `project.py`)
- Exploratory plots → Streamlit results: renders plots (evidence: `project.py`)
