# ykpciftci/dropout-early-warning architecture

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

- Interactive diagram: https://gitdiagram.com/ykpciftci/dropout-early-warning
- Repository: https://github.com/ykpciftci/dropout-early-warning

## Overview

This repository is a small, offline student-dropout prediction workflow: it loads the UCI CSV, creates binary dropout labels, trains enrollment- and semester-one models, then evaluates them. Training includes stratified splitting, preprocessing, cross-validation and model persistence; evaluation reports missed dropouts and classification metrics. The notebooks suggest separate exploration and model-comparison work, but their contents were not sampled, so no connections to runtime components are asserted. The graph reflects the shown Python calls and README dataset description; generated model artifacts are not present in the tree.

Main entry points: [`src/train.py`](https://github.com/ykpciftci/dropout-early-warning/blob/main/src/train.py) (Training workflow), [`src/evaluate.py`](https://github.com/ykpciftci/dropout-early-warning/blob/main/src/evaluate.py) (Evaluation workflow), [`src/data.py`](https://github.com/ykpciftci/dropout-early-warning/blob/main/src/data.py) (Load and split data), [`src/config.py`](https://github.com/ykpciftci/dropout-early-warning/blob/main/src/config.py) (Paths and features)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Data preparation"]
  node_config["Paths and features<br/>[config.py]"]
  node_data_prep["Load and split data<br/>[data.py]"]
end

subgraph group_modeling["Model training"]
  node_trainer["Training workflow<br/>[train.py]"]
  node_pipeline["Preprocessing and classifier<br/>[train.py]"]
  node_validation["Cross-validation<br/>[train.py]"]
  node_model_artifacts["Saved model artifacts"]
end

subgraph group_evaluation["Model evaluation"]
  node_evaluator["Evaluation workflow<br/>[evaluate.py]"]
  node_reports["Classification metrics<br/>[evaluate.py]"]
end

subgraph group_research["Notebook research"]
  node_exploration["Data exploration"]
  node_comparison["Model comparison"]
end

node_operator(("Workflow operator"))
node_uci_data["UCI dataset"]

node_operator -->|"runs training"| node_trainer
node_operator -->|"runs evaluation"| node_evaluator
node_uci_data -->|"loads CSV"| node_data_prep
node_trainer -->|"uses settings"| node_config
node_trainer -->|"loads and splits"| node_data_prep
node_trainer -->|"builds and fits"| node_pipeline
node_trainer -->|"cross-validates"| node_validation
node_trainer -->|"saves model"| node_model_artifacts
node_evaluator -->|"uses settings"| node_config
node_evaluator -->|"loads and splits"| node_data_prep
node_evaluator -->|"loads model"| node_model_artifacts
node_evaluator -->|"prints metrics"| node_reports

click node_config "https://github.com/ykpciftci/dropout-early-warning/blob/main/src/config.py"
click node_data_prep "https://github.com/ykpciftci/dropout-early-warning/blob/main/src/data.py"
click node_trainer "https://github.com/ykpciftci/dropout-early-warning/blob/main/src/train.py"
click node_pipeline "https://github.com/ykpciftci/dropout-early-warning/blob/main/src/train.py"
click node_validation "https://github.com/ykpciftci/dropout-early-warning/blob/main/src/train.py"
click node_evaluator "https://github.com/ykpciftci/dropout-early-warning/blob/main/src/evaluate.py"
click node_reports "https://github.com/ykpciftci/dropout-early-warning/blob/main/src/evaluate.py"
click node_exploration "https://github.com/ykpciftci/dropout-early-warning/blob/main/notebooks/01_exploration.ipynb"
click node_comparison "https://github.com/ykpciftci/dropout-early-warning/blob/main/notebooks/02_model_comparison.ipynb"

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_config,node_data_prep toneBlue
class node_trainer,node_pipeline,node_validation,node_model_artifacts toneAmber
class node_evaluator,node_reports toneMint
class node_exploration,node_comparison toneRose
class node_operator,node_uci_data toneIndigo
```

## Components

### Data preparation

- [Paths and features](https://github.com/ykpciftci/dropout-early-warning/blob/main/src/config.py): `src/config.py`
- [Load and split data](https://github.com/ykpciftci/dropout-early-warning/blob/main/src/data.py): `src/data.py`

### Model training

- [Training workflow](https://github.com/ykpciftci/dropout-early-warning/blob/main/src/train.py): `src/train.py`
- [Preprocessing and classifier](https://github.com/ykpciftci/dropout-early-warning/blob/main/src/train.py): `src/train.py`
- [Cross-validation](https://github.com/ykpciftci/dropout-early-warning/blob/main/src/train.py): `src/train.py`
- **Saved model artifacts**

### Model evaluation

- [Evaluation workflow](https://github.com/ykpciftci/dropout-early-warning/blob/main/src/evaluate.py): `src/evaluate.py`
- [Classification metrics](https://github.com/ykpciftci/dropout-early-warning/blob/main/src/evaluate.py): `src/evaluate.py`

### Notebook research

- [Data exploration](https://github.com/ykpciftci/dropout-early-warning/blob/main/notebooks/01_exploration.ipynb): `notebooks/01_exploration.ipynb`
- [Model comparison](https://github.com/ykpciftci/dropout-early-warning/blob/main/notebooks/02_model_comparison.ipynb): `notebooks/02_model_comparison.ipynb`

### Other components

- **Workflow operator**
- **UCI dataset**

## Connections

- Workflow operator → Training workflow: runs training (evidence: `src/train.py`)
- Workflow operator → Evaluation workflow: runs evaluation (evidence: `src/evaluate.py`)
- UCI dataset → Load and split data: loads CSV (evidence: `src/data.py`)
- Training workflow → Paths and features: uses settings (evidence: `src/train.py`)
- Training workflow → Load and split data: loads and splits (evidence: `src/train.py`)
- Training workflow → Preprocessing and classifier: builds and fits (evidence: `src/train.py`)
- Training workflow → Cross-validation: cross-validates (evidence: `src/train.py`)
- Training workflow → Saved model artifacts: saves model (evidence: `src/train.py`)
- Evaluation workflow → Paths and features: uses settings (evidence: `src/evaluate.py`)
- Evaluation workflow → Load and split data: loads and splits (evidence: `src/evaluate.py`)
- Evaluation workflow → Saved model artifacts: loads model (evidence: `src/evaluate.py`)
- Evaluation workflow → Classification metrics: prints metrics (evidence: `src/evaluate.py`)
