# wongtaiming/medical_insurance_cost_prediction_ml architecture

> Architecture diagram of the GitHub repository wongtaiming/medical_insurance_cost_prediction_ml, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/wongtaiming/medical_insurance_cost_prediction_ml
- Repository: https://github.com/wongtaiming/medical_insurance_cost_prediction_ml

## Overview

This repository is a Streamlit medical-insurance cost predictor. A user selects a model and enters personal, health, and lifestyle details; the app prepares model features, optionally scales them, loads a trained model, and presents an annual-cost estimate with explanations. The tree also documents preprocessing and training notebooks for three model families. The README provides no architectural detail, and the source excerpts are partial, so training-data flow and some runtime wiring are not shown.

Main entry points: [`Main.py`](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/Main.py) (Calculator interface), [`ml_training/01_Preprocessing.ipynb`](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/ml_training/01_Preprocessing.ipynb) (Preprocessing notebook), [`ml_training/04_SVRRBF.ipynb`](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/ml_training/04_SVRRBF.ipynb) (SVR training), [`dataset/medical_insurance.csv`](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/dataset/medical_insurance.csv) (Insurance dataset)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Prediction app"]
  node_interface["Calculator interface<br/>[Main.py]"]
  node_features["Feature preparation<br/>[Main.py]"]
  node_model_loader["Model loading<br/>[Main.py]"]
  node_scaling["SVR scaling<br/>[Main.py]"]
  node_prediction["Cost prediction<br/>[Main.py]"]
  node_estimate["Annual cost estimate<br/>[Main.py]"]
end

subgraph group_insights["Estimate insights"]
  node_explanation["Estimate explanation<br/>[Main.py]"]
  node_benchmark["Benchmark statistics<br/>[Main.py]"]
end

subgraph group_training["Model training"]
  node_preprocessing["Preprocessing notebook"]
  node_rf_training["Random forest training"]
  node_mlr_training["Linear regression training"]
  node_svr_training["SVR training<br/>[04_SVRRBF.ipynb]"]
end

subgraph group_assets["Data and artifacts"]
  node_raw_data[("Insurance dataset")]
  node_encoded_data[("Encoded dataset")]
  node_preprocessor["Preprocessor artifact<br/>[preprocessor.pkl]"]
  node_rf_model["Random forest model"]
  node_mlr_model["Linear regression model<br/>[MLR_model.pkl]"]
  node_svr_model["SVR model<br/>[svr_rbf_model.pkl]"]
  node_svr_scaler["SVR scaler<br/>[svr_scaler.pkl]"]
end

node_user(("Insurance estimator user"))

node_user -->|"enters details"| node_interface
node_interface -->|"prepares inputs"| node_features
node_interface -->|"loads selected model"| node_model_loader
node_model_loader -->|"loads"| node_rf_model
node_model_loader -->|"loads"| node_mlr_model
node_model_loader -->|"loads"| node_svr_model
node_interface -->|"scales SVR inputs"| node_scaling
node_scaling -->|"loads scaler"| node_svr_scaler
node_interface -->|"requests estimate"| node_prediction
node_features -->|"provides features"| node_prediction
node_prediction -->|"returns estimate"| node_estimate
node_interface -->|"builds explanation"| node_explanation
node_estimate -->|"provides estimate"| node_explanation
node_benchmark -->|"reads statistics"| node_raw_data
node_preprocessing -.->|"prepares data"| node_raw_data
node_preprocessing -.->|"produces encoded data"| node_encoded_data
node_preprocessing -.->|"saves artifact"| node_preprocessor
node_rf_training -.->|"trains model"| node_rf_model
node_mlr_training -.->|"trains model"| node_mlr_model
node_svr_training -.->|"trains model"| node_svr_model
node_svr_training -.->|"saves scaler"| node_svr_scaler

click node_interface "https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/Main.py"
click node_features "https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/Main.py"
click node_model_loader "https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/Main.py"
click node_scaling "https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/Main.py"
click node_prediction "https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/Main.py"
click node_estimate "https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/Main.py"
click node_explanation "https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/Main.py"
click node_benchmark "https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/Main.py"
click node_raw_data "https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/dataset/medical_insurance.csv"
click node_encoded_data "https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/dataset/medical_insurance_encoded.csv"
click node_preprocessing "https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/ml_training/01_Preprocessing.ipynb"
click node_rf_training "https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/ml_training/02_random_forest_model.ipynb"
click node_mlr_training "https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/ml_training/03_MultipleLinearRegression.ipynb"
click node_svr_training "https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/ml_training/04_SVRRBF.ipynb"
click node_preprocessor "https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/models/preprocessor.pkl"
click node_rf_model "https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/models/random_forest_model.pkl"
click node_mlr_model "https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/models/MLR_model.pkl"
click node_svr_model "https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/models/svr_rbf_model.pkl"
click node_svr_scaler "https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/models/svr_scaler.pkl"

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_interface,node_features,node_model_loader,node_scaling,node_prediction,node_estimate,node_user toneBlue
class node_explanation,node_benchmark toneAmber
class node_preprocessing,node_rf_training,node_mlr_training,node_svr_training toneMint
class node_raw_data,node_encoded_data,node_preprocessor,node_rf_model,node_mlr_model,node_svr_model,node_svr_scaler toneRose
```

## Components

### Prediction app

- [Calculator interface](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/Main.py): `Main.py`
- [Feature preparation](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/Main.py): `Main.py`
- [Model loading](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/Main.py): `Main.py`
- [SVR scaling](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/Main.py): `Main.py`
- [Cost prediction](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/Main.py): `Main.py`
- [Annual cost estimate](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/Main.py): `Main.py`

### Estimate insights

- [Estimate explanation](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/Main.py): `Main.py`
- [Benchmark statistics](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/Main.py): `Main.py`

### Model training

- [Preprocessing notebook](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/ml_training/01_Preprocessing.ipynb): `ml_training/01_Preprocessing.ipynb`
- [Random forest training](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/ml_training/02_random_forest_model.ipynb): `ml_training/02_random_forest_model.ipynb`
- [Linear regression training](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/ml_training/03_MultipleLinearRegression.ipynb): `ml_training/03_MultipleLinearRegression.ipynb`
- [SVR training](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/ml_training/04_SVRRBF.ipynb): `ml_training/04_SVRRBF.ipynb`

### Data and artifacts

- [Insurance dataset](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/dataset/medical_insurance.csv): `dataset/medical_insurance.csv`
- [Encoded dataset](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/dataset/medical_insurance_encoded.csv): `dataset/medical_insurance_encoded.csv`
- [Preprocessor artifact](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/models/preprocessor.pkl): `models/preprocessor.pkl`
- [Random forest model](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/models/random_forest_model.pkl): `models/random_forest_model.pkl`
- [Linear regression model](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/models/MLR_model.pkl): `models/MLR_model.pkl`
- [SVR model](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/models/svr_rbf_model.pkl): `models/svr_rbf_model.pkl`
- [SVR scaler](https://github.com/wongtaiming/medical_insurance_cost_prediction_ml/blob/main/models/svr_scaler.pkl): `models/svr_scaler.pkl`

### Other components

- **Insurance estimator user**

## Connections

- Insurance estimator user → Calculator interface: enters details
- Calculator interface → Feature preparation: prepares inputs
- Calculator interface → Model loading: loads selected model
- Model loading → Random forest model: loads
- Model loading → Linear regression model: loads
- Model loading → SVR model: loads
- Calculator interface → SVR scaling: scales SVR inputs
- SVR scaling → SVR scaler: loads scaler
- Calculator interface → Cost prediction: requests estimate
- Feature preparation → Cost prediction: provides features
- Cost prediction → Annual cost estimate: returns estimate
- Calculator interface → Estimate explanation: builds explanation
- Annual cost estimate → Estimate explanation: provides estimate
- Benchmark statistics → Insurance dataset: reads statistics
- Preprocessing notebook → Insurance dataset: prepares data
- Preprocessing notebook → Encoded dataset: produces encoded data
- Preprocessing notebook → Preprocessor artifact: saves artifact
- Random forest training → Random forest model: trains model
- Linear regression training → Linear regression model: trains model
- SVR training → SVR model: trains model
- SVR training → SVR scaler: saves scaler
