2024-12-10 19:58:37 -05:00
2024-12-02 08:33:42 -05:00
2024-12-10 19:49:02 -05:00
2024-12-10 19:58:22 -05:00

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 is not available yet. When it is, it will be linked here.

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

Required Packages

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:
    conda env create -f conda_env.yml
    
  3. Activate environment:
    conda activate csci349
    
  4. Launch Jupyter:
    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.

Description
A data mining project analyzing Formula One driver performance across various track an...
Readme 9 MiB
Languages
Jupyter Notebook 100%