
โครงการนี้มีวัตถุประสงค์เพื่อปรับปรุงกระบวนการทำนายผลเกมของ NBA โดยมุ่งเน้นไปที่โมเดลการทำนาย AI ขั้นสูงมากกว่าการรวบรวมข้อมูลและการจัดการที่กว้างขวาง ซึ่งแตกต่างจากโครงการก่อนหน้าของฉัน NBA Betting ซึ่งมีวัตถุประสงค์เพื่อสร้างคุณสมบัติที่ครอบคลุมสำหรับการทำนายเกม NBA ผ่านการรวบรวมข้อมูลที่กว้างขวางโครงการนี้ทำให้กระบวนการง่ายขึ้น ในขณะที่วิธีการก่อนหน้านี้ได้รับประโยชน์จากการวัดที่ได้จากอุตสาหกรรมต่าง ๆ ค่าใช้จ่ายและความซับซ้อนของการจัดการการรวบรวมข้อมูลนั้นสูงเกินไป โครงการนี้มุ่งเน้นไปที่ชุดข้อมูลหลักเช่นข้อมูลการเล่นโดยเล่นและใช้ประโยชน์จากการเรียนรู้อย่างลึกซึ้งและ Genai เพื่อทำนายผลลัพธ์ของเกม
ปัจจุบันโครงการอยู่ในช่วงเริ่มต้นของการพัฒนาด้วยเอ็นจิ้นการทำนายขั้นพื้นฐานที่ใช้โมเดลง่าย ๆ เช่นการถดถอยสันเขา XGBOOST และ MLP พื้นฐาน เอ็นจิ้นการทำนายถูก จำกัด ไว้ที่การคาดการณ์คะแนนเกมขั้นพื้นฐานและชนะเปอร์เซ็นต์ เว็บแอพให้บริการอินเทอร์เฟซอย่างง่ายสำหรับการแสดงเกมสำหรับวันที่ที่เลือกพร้อมกับคะแนนและการคาดการณ์ปัจจุบัน โชคดีที่สิ่งนี้ซับซ้อนเท่าที่โครงการควรจะกลายเป็น เป้าหมายคือการค่อยๆรวมส่วนใหญ่ของอัพเดทฐานข้อมูลและเป็นส่วนหนึ่งของตรรกะ API ของเกมเข้ากับเอ็นจิ้นการทำนายเดียว สิ่งนี้จะช่วยให้กระบวนการที่มีความคล่องตัวมากขึ้นและเอ็นจิ้นการทำนายที่มีความสามารถมากขึ้น

โครงการถูกสร้างขึ้นรอบ ๆ องค์ประกอบสำคัญสองสามข้อ:
Database Updater : ส่วนประกอบนี้รับผิดชอบในการอัปเดตฐานข้อมูลด้วยข้อมูลเกม NBA ล่าสุด มันดึงข้อมูลจาก NBA Stats API ดำเนินการ ETL สร้างคุณสมบัติสร้างการทำนายและจัดเก็บข้อมูลในฐานข้อมูล SQLite ประกอบด้วยโมดูลสองสามโมดูล:
database_update_manager.py : โมดูลหลักที่จัดทำกระบวนการทั้งหมดschedule.py : ดึงตารางจาก NBA API และอัปเดตฐานข้อมูลpbp.py : ดึงข้อมูลการเล่นโดยเล่นสำหรับเกมและอัปเดตฐานข้อมูลgame_states.py : การแยกวิเคราะห์ข้อมูลการเล่นโดยเล่นเพื่อสร้างสถานะเกมและอัปเดตฐานข้อมูลprior_states.py : กำหนดสถานะเกมสุดท้ายก่อนหน้าสำหรับทีมfeatures.py : ใช้สถานะเกมสุดท้ายก่อนหน้านี้เพื่อสร้างคุณสมบัติสำหรับเอ็นจิ้นการทำนายpredictions.py : สร้างการคาดการณ์สำหรับเกมโดยใช้เอ็นจิ้นการทำนายที่เลือกGames API : ส่วนประกอบนี้รับผิดชอบในการอัปเดตการคาดการณ์สำหรับเกมที่ดำเนินการต่อเนื่องหรือเสร็จสิ้นและให้ข้อมูลไปยังเว็บแอป มันดึงข้อมูลจากฐานข้อมูลสร้างการคาดการณ์และให้บริการข้อมูลไปยังเว็บแอป
games.py : ดึงข้อมูลเกมจากฐานข้อมูลจัดการการอัปเดตการทำนายและการจัดรูปแบบข้อมูลapi.py : กำหนดจุดสิ้นสุด APIgames_api.md : เอกสาร APIเว็บแอพ : ส่วนประกอบนี้เป็นส่วนหน้าของโครงการโดยให้อินเทอร์เฟซอย่างง่ายสำหรับผู้ใช้ในการดูเกมและการคาดการณ์ มันถูกสร้างขึ้นโดยใช้ขวด
start_app.py : จุดเข้าหลักสำหรับเว็บแอปที่พบในไดเรกทอรีรูทapp.py : โมดูลหลักที่กำหนดแอพและเส้นทางของขวดgame_data_processor.py : รูปแบบข้อมูลเกมจาก API สำหรับเว็บแอปtemplates/ : มีเทมเพลต HTML สำหรับเว็บแอปstatic/ : มีไฟล์ CSS และ JavaScript สำหรับเว็บแอป
การจัดหาข้อมูล : มุ่งเน้นไปที่แหล่งข้อมูลจำนวนน้อยที่สุดที่อธิบายบาสเก็ตบอลโดยพื้นฐาน ปัจจุบันเราใช้ข้อมูลการเล่นโดยเล่นจาก NBA API ในอนาคตการรวมข้อมูลวิดีโอและการติดตามจะน่าสนใจแม้ว่าสิ่งเหล่านี้จะต้องใช้ทรัพยากรและการเข้าถึงมากขึ้น
เครื่องมือทำนาย : นี่คือแกนหลักของโครงการและจะเป็นจุดสนใจในการพัฒนาจนถึงฤดูกาล 2024-2025 เริ่มต้นขึ้น ตัวเลือกเครื่องยนต์การทำนายในปัจจุบันจะถูกแทนที่ด้วยเครื่องยนต์ DL และ Genai ซึ่งช่วยให้การแยกวิเคราะห์ข้อมูลลดลงและวิศวกรรมคุณลักษณะในขณะเดียวกันก็ปรับขนาดเพื่อทำนายผลลัพธ์ที่ซับซ้อนมากขึ้นรวมถึงประสิทธิภาพของผู้เล่นแต่ละคน
การจัดเก็บข้อมูล : การจัดเก็บข้อมูลในอนาคตจะรวมเข้ากับเอ็นจิ้นการทำนายได้อย่างราบรื่นยิ่งขึ้น ข้อกำหนดการจัดเก็บจะรวมข้อมูลที่ใช้ SQL ปัจจุบันที่ใช้สำหรับ API และเว็บแอปเข้ากับที่เก็บข้อมูลที่ใช้เวกเตอร์ขั้นสูงสำหรับรุ่น Genai ที่ใช้ RAG
เว็บแอพ : นี่คือส่วนหน้าของโครงการแสดงเกมสำหรับวันที่ที่เลือกพร้อมกับคะแนนและการคาดการณ์ปัจจุบัน อินเทอร์เฟซจะยังคงเรียบง่ายในขณะที่การใช้งานจะค่อยๆดีขึ้น การแชท Genai แยกต่างหากจะถูกเพิ่มในอนาคตเพื่อให้ผู้ใช้สามารถโต้ตอบกับเอ็นจิ้นการทำนายและปรับเปลี่ยนการคาดการณ์ของแต่ละบุคคลตามการตั้งค่าของพวกเขา



ปัจจุบันมีเครื่องมือทำนายพื้นฐานบางอย่างที่ใช้ในการทำนายผลลัพธ์ของเกมเอ็นบีเอ สิ่งเหล่านี้ทำหน้าที่เป็นตัวยึดตำแหน่งสำหรับเครื่องยนต์ DL และ Genai ขั้นสูงที่จะนำไปใช้ในอนาคต เครื่องยนต์ปัจจุบันทำการคาดการณ์ก่อนเกมสำหรับคะแนนบ้านและออกไปโดยใช้โมเดล ML การคาดการณ์เหล่านี้จะใช้ในการคำนวณเปอร์เซ็นต์การชนะและอัตรากำไรขั้นต้นสำหรับทีมเหย้า การคาดการณ์ที่อัปเดต (หลังการเริ่มเกม) ขึ้นอยู่กับการรวมกันของคะแนนเกมปัจจุบันเวลาที่เหลือและการคาดการณ์ก่อนเกม
ตัวชี้วัดปัจจุบันขึ้นอยู่กับการคาดการณ์ก่อนเกมสำหรับคะแนนทีมที่บ้านและออกไปพร้อมกับตัวชี้วัดดาวน์สตรีมเช่นเปอร์เซ็นต์การชนะและมาร์จิ้น ตัวทำนายง่าย ๆ เหล่านี้มีประสิทธิภาพสูงกว่าตัวทำนายพื้นฐาน
ในอนาคตจะมีการเพิ่มพื้นฐานที่ท้าทายมากขึ้นตามการแพร่กระจายของสเวกัสเมื่อมีการใช้โมเดล DL และ Genai

โคลนที่เก็บไปยังเครื่องในเครื่องของคุณโดยใช้คำสั่งต่อไปนี้:
git clone https://github.com/NBA-Betting/NBA_AI.gitนำทางไปยังไดเรกทอรีโครงการ:
cd NBA_AIสร้างสภาพแวดล้อมเสมือนจริง:
python -m venv venvเปิดใช้งานสภาพแวดล้อมเสมือนจริง:
source venv/bin/activateติดตั้งการพึ่งพาที่ต้องการ:
pip install -r requirements.txt เปลี่ยนชื่อไฟล์ .env.template เป็น .env :
cp .env.template .env เปิดไฟล์ .env ในตัวแก้ไขข้อความที่คุณต้องการและตั้งค่าที่จำเป็น:
# .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
แทนที่ /path/to/your/project/root ด้วยเส้นทางจริงไปยังไดเรกทอรีรากของโครงการของคุณบนเครื่องในเครื่องของคุณ คุณสามารถปล่อยให้ WEB_APP_SECRET_KEY แสดงความคิดเห็นหากคุณต้องการให้ Flask สร้างมันขึ้นมาโดยอัตโนมัติ
โดยค่าเริ่มต้นการกำหนดค่าจะชี้ไปที่ฐานข้อมูลที่ว่างเปล่า ( data/NBA_AI_BASE.sqlite ) หากคุณต้องการใช้ข้อมูลซีซั่น 2023-2024 ที่มีประชากรล่วงหน้า:
ดาวน์โหลดไฟล์ ZIP ฐานข้อมูล SQLITE จากหน้า GITHUB RELEESE:
v0.1 )NBA_AI_2023_2024.zip ที่แนบมากับรุ่นแยกไฟล์ zip:
unzip path/to/NBA_AI_2023_2024.zip -d data อัปเดตไฟล์ config.yaml เพื่อชี้ไปที่ฐานข้อมูลที่แยกออกมา:
database :
path : " data/NBA_AI_2023_2024.sqlite " # <<< Set this to point to the database you want to use. รันแอปพลิเคชันโดยใช้ไฟล์ start_app.py ในไดเรกทอรีรูท:
python start_app.pyเมื่อแอปพลิเคชันกำลังทำงานคุณสามารถเข้าถึงได้โดยเปิดเว็บเบราว์เซอร์และนำทางไปที่:
http://127.0.0.1:5000/
อัพเดทฐานข้อมูลประมวลผลเกมทั้งหมดสำหรับฤดูกาลที่ระบุในแต่ละครั้งที่มันทำงาน ในการวิ่งครั้งแรกสำหรับฤดูกาลที่กำหนดเมื่อฐานข้อมูลว่างเปล่าตัวอัปเดตจะดึงข้อมูลการเล่นโดยการเล่นโดยการเล่นสำหรับแต่ละเกม การอัปเดตครั้งแรกนี้อาจใช้เวลาหลายนาทีและต้องการหน่วยความจำ GB สองสามตัวเนื่องจากมีการโทรประมาณ 1,500 API ไปยัง NBA Stats API (หนึ่งต่อเกม) การอัปเดตที่ตามมาจะเร็วขึ้นอย่างมากเนื่องจากข้อมูลถูกเก็บไว้ในฐานข้อมูลแล้ว
โดยค่าเริ่มต้นเว็บแอปจะ จำกัด ฤดูกาล 2023-2024 และ 2024-2025 เพื่อป้องกันการอัปเดตในฤดูกาลที่ผ่านมามากเกินไป ข้อ จำกัด เหล่านี้สามารถปรับได้ในไฟล์ config.yaml และไม่ใช้เมื่อเรียกใช้รหัสโดยตรง กระบวนการอัปเดตรองรับฤดูกาลที่ไกลถึงปี 2543-2544 หากต้องการ
api :
valid_seasons :
- " 2023-2024 "
- " 2024-2025 "นี่เป็นงานที่กำลังดำเนินอยู่เป็นอย่างมากและมีการปรับปรุงมากมายที่ต้องทำ หากคุณมีข้อเสนอแนะหรือข้อเสนอแนะโปรดเปิดปัญหาหรือติดต่อฉันโดยตรง ฉันจะมุ่งเน้นไปที่การสร้างเครื่องยนต์การทำนาย DL และ Genai จนกระทั่งฤดูกาล 2024-2025 เริ่มต้นขึ้น แต่ก็จะทำงานเพื่อปรับปรุงแอพพลิเคชั่นเว็บและส่วนประกอบอื่น ๆ ตามเวลาที่อนุญาต