A machine learning system for basketball betting predictions using historical odds data.
main.py- Main entry point for training and using modelsconfig.py- Configuration constants and file pathsdata_processor.py- Data loading and preprocessing functionsmodel_trainer.py- Model training and optimization using Optunabetting.py- Betting logic and profit calculationsutils.py- Utility functions for data manipulationodds_data/- Directory containing historical odds data CSV files
- Team indexing and win/loss matrix creation
- Feature preparation using NMF (Non-negative Matrix Factorization)
- Data splitting for training and testing
- Neural network model using scikit-learn's MLPClassifier
- Hyperparameter optimization with Optuna
- Model evaluation using accuracy and profit metrics
- Kelly Criterion for bet sizing
- Profit calculation and tracking
- Implied probability calculations from odds
python main.py --year 2022 --trainThis will:
- Load odds data for the specified year
- Train a model using Optuna for hyperparameter optimization
- Save the best model and its parameters
- Print accuracy and profit metrics
python main.py --year 2022This will load a previously trained model for the specified year.
- Python 3.8+
- NumPy
- Pandas
- scikit-learn
- Optuna
- joblib
The odds data CSV files should have the following columns:
- Home Team
- Away Team
- Home Score
- Away Score
- Home Odds
- Away Odds