# surya8522/adult-income-prediction architecture

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

- Interactive diagram: https://gitdiagram.com/surya8522/adult-income-prediction
- Repository: https://github.com/surya8522/adult-income-prediction

## Overview

This repository is an Adult Income binary-classification project with a conventional ML workflow and an MLOps extension for tracking, registry, and lifecycle management. The main production-oriented path validates and preprocesses the dataset, trains and evaluates a model, then records model artifacts and registry state. The README documents broader capabilities, including EDA, model comparison, tuning, and prediction; those are represented without inferring unshown calls. Source excerpts show the production preprocessing outputs and MLflow training behavior, but not all downstream wiring.

Main entry points: [`pipelines/run_lab3_baseline.py`](https://github.com/surya8522/adult-income-prediction/blob/main/pipelines/run_lab3_baseline.py) (Baseline runner), [`pipelines/run_lab5_pipeline.py`](https://github.com/surya8522/adult-income-prediction/blob/main/pipelines/run_lab5_pipeline.py) (Production runner), [`pipelines/run_lab6_registry.py`](https://github.com/surya8522/adult-income-prediction/blob/main/pipelines/run_lab6_registry.py) (Registry runner), [`src/preprocess_pipeline.py`](https://github.com/surya8522/adult-income-prediction/blob/main/src/preprocess_pipeline.py) (Production preprocessing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Data preparation"]
  node_adult_csv["Adult dataset<br/>[adult.csv]"]
  node_data_validation["Data validation<br/>[validate_data.py]"]
  node_preprocess["Production preprocessing"]
  node_processed_data["Train/test features<br/>[X_train_final.npy]"]
  node_preprocessor["Fitted preprocessor<br/>[preprocessor.pkl]"]
  node_output_validation["Output validation"]
  node_baseline_preprocess["Baseline preprocessing<br/>[preprocess.py]"]
end

subgraph group_model["Modeling and evaluation"]
  node_eda_workflow["EDA and baseline"]
  node_baseline_train["Baseline training<br/>[train.py]"]
  node_evaluation["Model evaluation<br/>[evaluate.py]"]
  node_prediction_output["Income prediction"]
end

subgraph group_mlops["MLOps lifecycle"]
  node_mlflow_training["Tracked training<br/>[train_mlflow.py]"]
  node_registry_training["Registry training<br/>[train_registry.py]"]
  node_lifecycle["Version promotion"]
  node_registry_report["Registry report"]
  node_mlflow["MLflow service"]
end

subgraph group_automation["Workflow automation"]
  node_lab3["Baseline runner"]
  node_lab4["Tracking runner"]
  node_lab5["Production runner"]
  node_lab6["Registry runner"]
end

node_operator(("Project user"))

node_operator -->|"runs pipeline"| node_lab5
node_lab5 -->|"executes"| node_data_validation
node_lab5 -->|"executes"| node_preprocess
node_lab5 -->|"executes"| node_output_validation
node_adult_csv -->|"loads data"| node_preprocess
node_preprocess -->|"writes arrays"| node_processed_data
node_preprocess -->|"saves transform"| node_preprocessor
node_operator -->|"runs pipeline"| node_lab3
node_lab3 -->|"executes"| node_baseline_preprocess
node_lab3 -->|"executes"| node_baseline_train
node_lab3 -->|"executes"| node_evaluation
node_operator -->|"runs pipeline"| node_lab4
node_lab4 -->|"executes"| node_baseline_preprocess
node_lab4 -->|"executes"| node_mlflow_training
node_operator -->|"runs pipeline"| node_lab6
node_lab6 -->|"executes"| node_registry_training
node_lab6 -->|"executes"| node_lifecycle
node_lab6 -->|"executes"| node_registry_report
node_processed_data -->|"loads arrays"| node_mlflow_training
node_mlflow_training -->|"logs run and model"| node_mlflow
node_processed_data -->|"loads arrays"| node_registry_training
node_registry_training -->|"registers model"| node_mlflow
node_adult_csv -.->|"analyzes dataset"| node_eda_workflow
node_eda_workflow -->|"demonstrates prediction"| node_prediction_output
node_operator -.->|"requests estimate"| node_prediction_output

click node_adult_csv "https://github.com/surya8522/adult-income-prediction/blob/main/data/raw/adult.csv"
click node_data_validation "https://github.com/surya8522/adult-income-prediction/blob/main/src/validate_data.py"
click node_eda_workflow "https://github.com/surya8522/adult-income-prediction/blob/main/src/income_prediction.py"
click node_preprocess "https://github.com/surya8522/adult-income-prediction/blob/main/src/preprocess_pipeline.py"
click node_processed_data "https://github.com/surya8522/adult-income-prediction/blob/main/data/processed/X_train_final.npy"
click node_preprocessor "https://github.com/surya8522/adult-income-prediction/blob/main/models/preprocessor.pkl"
click node_output_validation "https://github.com/surya8522/adult-income-prediction/blob/main/src/validate_outputs.py"
click node_baseline_preprocess "https://github.com/surya8522/adult-income-prediction/blob/main/src/preprocess.py"
click node_baseline_train "https://github.com/surya8522/adult-income-prediction/blob/main/src/train.py"
click node_evaluation "https://github.com/surya8522/adult-income-prediction/blob/main/src/evaluate.py"
click node_mlflow_training "https://github.com/surya8522/adult-income-prediction/blob/main/src/train_mlflow.py"
click node_registry_training "https://github.com/surya8522/adult-income-prediction/blob/main/src/train_registry.py"
click node_lifecycle "https://github.com/surya8522/adult-income-prediction/blob/main/src/automate_lifecycle.py"
click node_registry_report "https://github.com/surya8522/adult-income-prediction/blob/main/src/generate_registry_report.py"
click node_lab3 "https://github.com/surya8522/adult-income-prediction/blob/main/pipelines/run_lab3_baseline.py"
click node_lab4 "https://github.com/surya8522/adult-income-prediction/blob/main/pipelines/run_lab4_tracking.py"
click node_lab5 "https://github.com/surya8522/adult-income-prediction/blob/main/pipelines/run_lab5_pipeline.py"
click node_lab6 "https://github.com/surya8522/adult-income-prediction/blob/main/pipelines/run_lab6_registry.py"
click node_prediction_output "https://github.com/surya8522/adult-income-prediction/blob/main/src/income_prediction.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_adult_csv,node_data_validation,node_preprocess,node_processed_data,node_preprocessor,node_output_validation,node_baseline_preprocess,node_operator toneBlue
class node_eda_workflow,node_baseline_train,node_evaluation,node_prediction_output toneAmber
class node_mlflow_training,node_registry_training,node_lifecycle,node_registry_report,node_mlflow toneMint
class node_lab3,node_lab4,node_lab5,node_lab6 toneRose
```

## Components

### Data preparation

- [Adult dataset](https://github.com/surya8522/adult-income-prediction/blob/main/data/raw/adult.csv): `data/raw/adult.csv`
- [Data validation](https://github.com/surya8522/adult-income-prediction/blob/main/src/validate_data.py): `src/validate_data.py`
- [Production preprocessing](https://github.com/surya8522/adult-income-prediction/blob/main/src/preprocess_pipeline.py): `src/preprocess_pipeline.py`
- [Train/test features](https://github.com/surya8522/adult-income-prediction/blob/main/data/processed/X_train_final.npy): `data/processed/X_train_final.npy`
- [Fitted preprocessor](https://github.com/surya8522/adult-income-prediction/blob/main/models/preprocessor.pkl): `models/preprocessor.pkl`
- [Output validation](https://github.com/surya8522/adult-income-prediction/blob/main/src/validate_outputs.py): `src/validate_outputs.py`
- [Baseline preprocessing](https://github.com/surya8522/adult-income-prediction/blob/main/src/preprocess.py): `src/preprocess.py`

### Modeling and evaluation

- [EDA and baseline](https://github.com/surya8522/adult-income-prediction/blob/main/src/income_prediction.py): `src/income_prediction.py`
- [Baseline training](https://github.com/surya8522/adult-income-prediction/blob/main/src/train.py): `src/train.py`
- [Model evaluation](https://github.com/surya8522/adult-income-prediction/blob/main/src/evaluate.py): `src/evaluate.py`
- [Income prediction](https://github.com/surya8522/adult-income-prediction/blob/main/src/income_prediction.py): `src/income_prediction.py`

### MLOps lifecycle

- [Tracked training](https://github.com/surya8522/adult-income-prediction/blob/main/src/train_mlflow.py): `src/train_mlflow.py`
- [Registry training](https://github.com/surya8522/adult-income-prediction/blob/main/src/train_registry.py): `src/train_registry.py`
- [Version promotion](https://github.com/surya8522/adult-income-prediction/blob/main/src/automate_lifecycle.py): `src/automate_lifecycle.py`
- [Registry report](https://github.com/surya8522/adult-income-prediction/blob/main/src/generate_registry_report.py): `src/generate_registry_report.py`
- **MLflow service**

### Workflow automation

- [Baseline runner](https://github.com/surya8522/adult-income-prediction/blob/main/pipelines/run_lab3_baseline.py): `pipelines/run_lab3_baseline.py`
- [Tracking runner](https://github.com/surya8522/adult-income-prediction/blob/main/pipelines/run_lab4_tracking.py): `pipelines/run_lab4_tracking.py`
- [Production runner](https://github.com/surya8522/adult-income-prediction/blob/main/pipelines/run_lab5_pipeline.py): `pipelines/run_lab5_pipeline.py`
- [Registry runner](https://github.com/surya8522/adult-income-prediction/blob/main/pipelines/run_lab6_registry.py): `pipelines/run_lab6_registry.py`

### Other components

- **Project user**

## Connections

- Project user → Production runner: runs pipeline (evidence: `README.md`)
- Production runner → Data validation: executes (evidence: `pipelines/run_lab5_pipeline.py`)
- Production runner → Production preprocessing: executes (evidence: `pipelines/run_lab5_pipeline.py`)
- Production runner → Output validation: executes (evidence: `pipelines/run_lab5_pipeline.py`)
- Adult dataset → Production preprocessing: loads data (evidence: `src/preprocess_pipeline.py`)
- Production preprocessing → Train/test features: writes arrays (evidence: `src/preprocess_pipeline.py`)
- Production preprocessing → Fitted preprocessor: saves transform (evidence: `src/preprocess_pipeline.py`)
- Project user → Baseline runner: runs pipeline (evidence: `README.md`)
- Baseline runner → Baseline preprocessing: executes (evidence: `pipelines/run_lab3_baseline.py`)
- Baseline runner → Baseline training: executes (evidence: `pipelines/run_lab3_baseline.py`)
- Baseline runner → Model evaluation: executes (evidence: `pipelines/run_lab3_baseline.py`)
- Project user → Tracking runner: runs pipeline (evidence: `README.md`)
- Tracking runner → Baseline preprocessing: executes (evidence: `pipelines/run_lab4_tracking.py`)
- Tracking runner → Tracked training: executes (evidence: `pipelines/run_lab4_tracking.py`)
- Project user → Registry runner: runs pipeline (evidence: `README.md`)
- Registry runner → Registry training: executes (evidence: `pipelines/run_lab6_registry.py`)
- Registry runner → Version promotion: executes (evidence: `pipelines/run_lab6_registry.py`)
- Registry runner → Registry report: executes (evidence: `pipelines/run_lab6_registry.py`)
- Train/test features → Tracked training: loads arrays (evidence: `src/train_mlflow.py`)
- Tracked training → MLflow service: logs run and model (evidence: `src/train_mlflow.py`)
- Train/test features → Registry training: loads arrays (evidence: `src/train_registry.py`)
- Registry training → MLflow service: registers model (evidence: `src/train_registry.py`)
- Adult dataset → EDA and baseline: analyzes dataset (evidence: `README.md`)
- EDA and baseline → Income prediction: demonstrates prediction (evidence: `src/income_prediction.py`)
- Project user → Income prediction: requests estimate
