Regression pipeline predicting Ethiopian Airlines ticket prices (ETB) from route, cabin class, timing, and aircraft type. Compares 11 models (Linear/Ridge/Lasso, SVR, Decision Tree, Random Forest, Gradient Boosting, Extra Trees, AdaBoost, XGBoost, LightGBM) and ships the best one via a Streamlit app.
# Ethiopian Airlines Flight Price Prediction
Predicting Ethiopian Airlines ticket prices (ETB) from route, cabin class,
timing, and aircraft details, using a regression model trained and compared
across 11 algorithms.
## Project structure
```
├── data/
│ └── Ethiopian_Airlines_Dataset.csv # Raw dataset
├── notebooks/
│ └── flight_price_regression.ipynb # Exploratory data analysis
├── src/
│ ├── __init__.py
│ ├── preprocessing.py # Cleaning, encoding, scaling
│ ├── feature_engineering.py # Derived features
│ ├── train.py # Training pipeline
│ ├── evaluate.py # Metrics & model selection
│ ├── predict.py # Inference
│ ├── visualization.py # EDA & evaluation plots
│ └── utils.py # Paths, I/O, data inspection
├── models/
│ ├── best_model.pkl # Saved best model
│ ├── feature_info.json # Feature metadata
│ └── model_metadata.json # Model metadata
├── outputs/
│ ├── figures/ # EDA & evaluation plots
│ ├── metrics/ # comparison.csv, CV results
│ └── reports/ # Markdown reports
├── app/
│ └── app.py # Streamlit application
├── tests/
│ └── test_preprocessing.py
├── requirements.txt
├── .gitignore
└── README.md
```
## Dataset
`data/Ethiopian_Airlines_Dataset.csv` — 22,000 domestic and regional
Ethiopian Airlines flights, with columns:
`airline, source_city, departure_time, stops, arrival_time, destination_city,
destination_country, class, duration, days_left, price, aircraft_type`
No missing values or duplicate rows.
## Approach
1. **Preprocessing** (`src/preprocessing.py`) — one-hot encode categorical
columns (`drop_first=True`, since cities/times have no natural order),
an 80/20 train/test split, and standard scaling for penalty- and
distance-based model …