Files
f1-race-prediction/README.md
2024-12-12 15:30:03 -05:00

93 lines
2.4 KiB
Markdown

# Formula One Lap Time Prediction
## Project Overview
This project analyzes Formula One race data to predict lap times based on weather conditions, track characteristics, and other race-specific variables. Using machine learning models, we achieved significant success in predicting lap times across different tracks and conditions.
## Video Presentation
Our video presentation can be found [here](https://youtu.be/6TfnljHx6Os).
## Key Findings
- LightGBM model achieved the best overall performance (R² = 0.806, RMSE = 3.663)
- Weather conditions explain up to 80% of lap time variation
- Track-specific characteristics significantly impact model performance
- Best performance on Mexico City GP (R² = 0.899) and Belgian GP (R² = 0.845)
## Data Source
Data was obtained from the FastF1 API, which provides:
- Detailed lap timing data
- Weather conditions
- Track information
- Tire compound data
Link: [FastF1 Documentation](https://docs.fastf1.dev/)
## Required Packages
```yaml
dependencies:
- python=3.10
- pandas
- numpy
- matplotlib
- seaborn
- scikit-learn
- xgboost
- lightgbm
- fastf1
- jupyter
```
## Project Structure
- `DataPrep_EDA.ipynb`: Data preparation and exploratory analysis
- `Modeling.ipynb`: Model development and evaluation
- `Final_Report.ipynb`: Comprehensive analysis and findings
- `data/`: Directory containing cached race data
- `conda_env.yml`: Conda environment specification
## Models Used
1. LightGBM (Best performer)
2. XGBoost
3. Random Forest
4. Gradient Boosting
## Key Features
- Track temperature and air temperature interaction
- Weather complexity score
- Tire degradation metrics
- Track evolution throughout races
## Performance Metrics
Average metrics across all tracks:
```
Model RMSE R² MAE
Gradient Boosting 4.259 0.726 2.083
LightGBM 3.663 0.806 1.839
Random Forest 4.915 0.644 2.396
XGBoost 4.333 0.717 2.122
```
## Setup Instructions
1. Clone the repository
2. Create conda environment:
```bash
conda env create -f conda_env.yml
```
3. Activate environment:
```bash
conda activate csci349
```
4. Launch Jupyter:
```bash
jupyter notebook
```
## Authors
- Sean O'Connor
- Connor Coles
## Course Information
- Course: CSCI 349 - Introduction to Data Mining
- Semester: Fall 2024
- Instructor: Brian King
## License
This project is part of academic coursework and is not licensed for commercial use.