Skip to content

Latest commit

 

History

History
44 lines (35 loc) · 2.6 KB

File metadata and controls

44 lines (35 loc) · 2.6 KB

BTL Python - Premier League Data Pipeline

Dự án thu thập, phục vụ API và phân tích dữ liệu cầu thủ/CLB Ngoại hạng Anh. Mọi đường dẫn xuất hiện trong code đang trỏ tới ổ E:\Python\BTL\RESULTS\...; hãy chỉnh lại nếu chạy ở máy khác.

Cấu trúc nhanh

  • Code/TASK1/CODE/Task_1.py: Crawl chỉ số từ fbref.com bằng Selenium, chuẩn hóa tên cầu thủ, lưu toàn bộ dữ liệu vào SQLite cau_thu.db và bảng player_transfers.
  • Code/TASK2/CODE/app.py: Flask API đọc SQLite, cung cấp /api/health, /api/columns, /api/player?name=, /api/club?club=.
  • Code/TASK2/CODE/lookup.py: CLI gọi API để tra cứu và xuất CSV (lưu dưới E:\Python\BTL\RESULTS\TASK2\OUTPUT\).
  • Code/TASK3/CODE/Task_3_1.py: Phân tích thống kê theo đội, tính form score (z-score), xuất CSV và biểu đồ.
  • Code/TASK3/CODE/Task_3_2_pipeline_optimized_rdfr.py: Ghép bảng transfers + players, huấn luyện RandomForest (GridSearch), lưu model và feature importance.
  • Code/TASK3/CODE/Task_3_2_predict_players.py: Nạp model đã huấn luyện, dự đoán giá trị cầu thủ, xuất CSV và các biểu đồ đánh giá.
  • Code/TASK4/CODE/Task_4_3_final.py & Task_4_12_final.py: Phân cụm cầu thủ (KMeans, PCA), loại outlier và xuất thống kê cụm.

Yêu cầu môi trường

  • Python 3, Chrome + ChromeDriver (dùng webdriver_manager).
  • Thư viện chính: selenium, requests, beautifulsoup4, lxml, pandas, numpy, flask, flask-cors, scikit-learn, xgboost, matplotlib, seaborn, joblib.
  • Cần quyền ghi vào các thư mục output đã hard-code.

Cách chạy nhanh

  1. Crawl & tạo DB
    python Code/TASK1/CODE/Task_1.py
    Sinh SQLite tại .../TASK1/OUTPUT/cau_thu.db và bảng player_transfers.

  2. Khởi động API (cần DB có sẵn)
    set DB_PATH=E:\Python\BTL\RESULTS\TASK1\OUTPUT\cau_thu.db
    python Code/TASK2/CODE/app.py

  3. Tra cứu nhanh & xuất CSV
    set API_BASE=http://127.0.0.1:5000 (tuỳ chọn)
    python Code/TASK2/CODE/lookup.py --name "Erling Haaland"
    hoặc --club "Arsenal".

  4. Phân tích/huấn luyện

  • python Code/TASK3/CODE/Task_3_1.py → thống kê đội, form score, biểu đồ.
  • python Code/TASK3/CODE/Task_3_2_pipeline_optimized_rdfr.py → train & lưu model.
  • python Code/TASK3/CODE/Task_3_2_predict_players.py → dự đoán và vẽ biểu đồ.
  1. Phân cụm cầu thủ
    Chạy hai script trong Code/TASK4/CODE để tạo báo cáo và CSV cụm.

Tác giả

  • Nguyễn Văn Hoàng
  • Vũ Anh Tuấn
  • Phạm Hoàng Việt