
Proyek ini bertujuan untuk merampingkan proses memprediksi hasil game NBA dengan berfokus pada model prediksi AI canggih daripada pengumpulan dan manajemen data yang luas. Tidak seperti proyek saya sebelumnya, NBA Betting, yang bertujuan untuk membuat fitur yang komprehensif untuk memprediksi game NBA melalui pengumpulan data yang luas, proyek ini menyederhanakan proses tersebut. Sementara pendekatan sebelumnya diuntungkan dari berbagai metrik yang diturunkan industri, biaya dan kompleksitas mengelola pengumpulan data terlalu tinggi. Proyek ini berfokus pada kumpulan data inti, seperti data play-by-play, dan memanfaatkan pembelajaran yang mendalam dan Genai untuk memprediksi hasil permainan.
Proyek ini saat ini sedang dalam tahap awal pengembangan, dengan mesin prediksi dasar yang menggunakan model sederhana seperti Ridge Regression, XGBoost, dan MLP dasar. Mesin prediksi terbatas pada prediksi skor permainan dasar dan persentase kemenangan. Aplikasi Web menyediakan antarmuka sederhana untuk menampilkan game untuk tanggal yang dipilih bersama dengan skor dan prediksi saat ini. Untungnya, ini sama rumitnya dengan proyek yang seharusnya. Tujuannya adalah untuk secara bertahap mengintegrasikan sebagian besar bagian pembaruan database dan bagian dari logika API game ke dalam mesin prediksi tunggal. Ini akan memungkinkan proses yang lebih ramping dan mesin prediksi yang lebih mampu.

Proyek ini dibangun di sekitar beberapa komponen utama:
Database Updater : Komponen ini bertanggung jawab untuk memperbarui database dengan data game NBA terbaru. Ini mengambil data dari API statistik NBA, melakukan operasi ETL, menghasilkan fitur, membuat prediksi, dan menyimpan data dalam database SQLite. Ini terdiri dari beberapa modul:
database_update_manager.py : Modul utama yang mengatur seluruh proses.schedule.py : Mengambil jadwal dari API NBA dan memperbarui database.pbp.py : Mengambil data play-by-play untuk game dan memperbarui database.game_states.py : Parses data play-by-play untuk menghasilkan status game dan memperbarui database.prior_states.py : Menentukan negara pertandingan terakhir sebelumnya untuk tim.features.py : Menggunakan status game akhir sebelumnya untuk menghasilkan fitur untuk mesin prediksi.predictions.py : Menghasilkan prediksi untuk game menggunakan mesin prediksi yang dipilih.Game API : Komponen ini bertanggung jawab untuk memperbarui prediksi untuk game yang sedang berlangsung atau selesai dan menyediakan data ke aplikasi web. Ini mengambil data dari database, menghasilkan prediksi, dan melayani data ke aplikasi web.
games.py : Mengambil data game dari database, mengelola pembaruan prediksi dan pemformatan data.api.py : Menentukan titik akhir API.games_api.md : Dokumentasi API.Aplikasi Web : Komponen ini adalah ujung depan proyek, menyediakan antarmuka sederhana bagi pengguna untuk melihat game dan prediksi. Dibangun menggunakan Flask.
start_app.py : Titik masuk utama untuk aplikasi web yang ditemukan di direktori root.app.py : Modul utama yang mendefinisikan aplikasi dan rute Flask.game_data_processor.py : Memformat data game dari API untuk aplikasi web.templates/ : Berisi templat HTML untuk aplikasi web.static/ : berisi file CSS dan JavaScript untuk aplikasi web.
Sumber Data : Fokus pada sejumlah minimal sumber data yang secara fundamental menggambarkan bola basket. Saat ini, kami menggunakan data play-by-play dari API NBA. Di masa depan, menggabungkan data video dan pelacakan akan menarik, meskipun ini membutuhkan sumber daya dan akses yang jauh lebih banyak.
Mesin Prediksi : Ini adalah inti dari proyek dan akan menjadi fokus pengembangan hingga musim 2024-2025 dimulai. Opsi mesin prediksi saat ini akan diganti dengan mesin berbasis DL dan Genai, memungkinkan penurunan data parsing dan rekayasa fitur sementara juga penskalaan untuk memprediksi hasil yang lebih kompleks, termasuk kinerja pemain individu.
Penyimpanan Data : Penyimpanan data di masa depan akan lebih terintegrasi dengan mesin prediksi. Persyaratan penyimpanan akan menggabungkan data berbasis SQL saat ini yang digunakan untuk API dan aplikasi Web dengan penyimpanan berbasis vektor yang lebih canggih untuk model Genai berbasis RAG.
Aplikasi Web : Ini adalah ujung depan proyek, menampilkan game untuk tanggal yang dipilih bersama dengan skor dan prediksi saat ini. Antarmuka akan tetap sederhana saat kegunaan secara bertahap ditingkatkan. Obrolan Genai yang terpisah akan ditambahkan di masa depan untuk memungkinkan pengguna berinteraksi dengan mesin prediksi dan memodifikasi prediksi individu berdasarkan preferensi mereka.



Saat ini, ada beberapa mesin prediksi dasar yang digunakan untuk memprediksi hasil game NBA. Ini berfungsi sebagai placeholder untuk mesin DL dan Genai yang lebih maju yang akan diimplementasikan di masa depan. Mesin saat ini membuat prediksi pra-pertandingan untuk skor kandang dan tandang menggunakan model ML. Prediksi ini kemudian digunakan untuk menghitung persentase kemenangan dan margin untuk tim tuan rumah. Prediksi yang diperbarui (setelah memulai game) didasarkan pada kombinasi skor game saat ini, waktu yang tersisa, dan prediksi pra-pertandingan.
Metrik saat ini didasarkan pada prediksi pra-pertandingan untuk skor tim dan tandang, bersama dengan metrik hilir seperti persentase kemenangan dan margin. Prediktor sederhana ini saat ini mengungguli prediktor dasar.
Di masa depan, garis dasar yang lebih menantang berdasarkan penyebaran VEGAS akan ditambahkan ketika model DL dan Genai diimplementasikan.

Kloning repositori ke mesin lokal Anda menggunakan perintah berikut:
git clone https://github.com/NBA-Betting/NBA_AI.gitArahkan ke Direktori Proyek:
cd NBA_AIBuat lingkungan virtual:
python -m venv venvAktifkan lingkungan virtual:
source venv/bin/activateInstal dependensi yang diperlukan:
pip install -r requirements.txt Ubah nama file .env.template ke .env :
cp .env.template .env Buka file .env di editor teks pilihan Anda dan atur nilai yang diperlukan:
# .env
# Flask secret key (Optional, Flask will generate one if not set)
# WEB_APP_SECRET_KEY=your_generated_secret_key
# Project root path (Mandatory)
PROJECT_ROOT=/path/to/your/project/root
Ganti /path/to/your/project/root dengan jalur aktual ke direktori root proyek Anda di mesin lokal Anda. Anda dapat meninggalkan WEB_APP_SECRET_KEY berkomentar jika Anda ingin Flask menghasilkannya secara otomatis.
Secara default, konfigurasi akan menunjuk ke database kosong ( data/NBA_AI_BASE.sqlite ). Jika Anda ingin menggunakan data musim 2023-2024 yang telah dipopulasi:
Unduh file zip basis data sqlite dari halaman rilis GitHub:
v0.1 ).NBA_AI_2023_2024.zip terlampir pada rilis.Ekstrak file zip:
unzip path/to/NBA_AI_2023_2024.zip -d data Perbarui file config.yaml untuk menunjuk ke database yang diekstraksi:
database :
path : " data/NBA_AI_2023_2024.sqlite " # <<< Set this to point to the database you want to use. Jalankan aplikasi menggunakan file start_app.py di direktori root:
python start_app.pySetelah aplikasi berjalan, Anda dapat mengaksesnya dengan membuka browser web Anda dan menavigasi ke:
http://127.0.0.1:5000/
Pembaruan database memproses semua game untuk musim yang ditentukan setiap kali dijalankan. Pada menjalankan pertama untuk musim tertentu, ketika database kosong, pembaruan mengambil data play-by-play untuk setiap game. Pembaruan awal ini mungkin memakan waktu beberapa menit dan memerlukan hingga beberapa GB memori, karena membuat sekitar 1.500 panggilan API ke API Statistik NBA (satu per game). Pembaruan selanjutnya akan secara signifikan lebih cepat karena data sudah disimpan dalam database.
Secara default, aplikasi Web terbatas pada musim 2023-2024 dan 2024-2025 untuk mencegah pembaruan yang berlebihan di musim-musim sebelumnya. Pembatasan ini dapat disesuaikan dalam file config.yaml dan tidak berlaku saat menjalankan kode secara langsung. Proses pembaruan mendukung musim sejauh 2000-2001, jika diinginkan.
api :
valid_seasons :
- " 2023-2024 "
- " 2024-2025 "Ini adalah pekerjaan yang sedang berlangsung, dan ada banyak perbaikan yang harus dilakukan. Jika Anda memiliki saran atau umpan balik, jangan ragu untuk membuka masalah atau menjangkau saya secara langsung. Saya akan fokus pada pembuatan mesin prediksi DL dan Genai hingga musim 2024-2025 dimulai, tetapi juga akan berupaya meningkatkan aplikasi web dan komponen lainnya sesuai waktu.