Data Science Project Structure

Sources:

Assuming that Python is they main language for a data science project. Assuming also to use Python venv.

The following structure is adapted from: dvc-pip

.
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ pyproject.toml
โ”œโ”€โ”€ .gitignore
โ”œโ”€โ”€ LICENSE
โ”‚
โ”œโ”€โ”€ configs/                # Main configuration file
โ”‚   โ”œโ”€โ”€ main.yaml           # Configurations for training model
โ”‚   โ”œโ”€โ”€ model/
|   |   |โ”€โ”€ model1.yaml
|   |   |โ”€โ”€ model2.yaml
|   โ”œโ”€โ”€ process/            # Configuration for process
|       โ”œโ”€โ”€ process1.yaml
โ”‚
โ”œโ”€โ”€ data/                      
โ”‚   โ”œโ”€โ”€ final/              # Data after training
โ”‚   โ”œโ”€โ”€ processed/          # Data after processing
|	โ”œโ”€โ”€ raw/                # Raw data
|
โ”œโ”€โ”€ docs/                   # Documentation
โ”œโ”€โ”€ models/                 # Store models  
โ”œโ”€โ”€ notebooks/              # Store notebooks
โ”‚
โ”œโ”€โ”€ src/                    # Source code
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ process.py
โ”‚   โ”œโ”€โ”€ __pycache__/
โ”‚   โ”œโ”€โ”€ train_mode.py
โ”‚
โ”œโ”€โ”€ scripts/                    # Utility scripts
โ”‚   โ”œโ”€โ”€ download_data.sh
โ”‚   โ”œโ”€โ”€ download_models.sh
โ”‚
โ”œโ”€โ”€ tests/                      # Unit tests
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ test_process.py
โ”‚   โ””โ”€โ”€ test_training.py

Explanation with each part: