Ứng dụng máy học trọn vòng đời: xử lý dữ liệu taxi NYC bằng Apache Spark, huấn luyện Linear Regression, RandomForest và Spark XGBoost, rồi phục vụ dự đoán realtime qua FastAPI + React (Leaflet). Mục tiêu: mô hình chính xác, UI thân thiện, chạy được ngay bằng một lệnh.
- Xử lý dữ liệu lớn: Spark đọc/làm sạch 1.5M trips, log-transform
trip_duration→log_duration. - Pipeline ML: Linear Regression (baseline), RandomForest (tuned nhỏ), SparkXGBRegressor (tốt nhất, tree_method=hist, num_workers=1).
- Đánh giá: RMSLE/RMSE; metrics và đường dẫn model lưu tại
models/model_metadata.json. - Giao diện: React + Leaflet chọn điểm đón/trả trên bản đồ, nhận dự đoán tức thì.
- Đóng gói: Docker Compose; có runner một lệnh cho end-user.
- Ngôn ngữ: Python 3.10+, Node 18
- ML: PySpark MLlib, xgboost.spark
- Backend: FastAPI, Uvicorn
- Frontend: React, Vite, Leaflet, MUI
- Triển khai: Docker, Docker Compose
- Linux/macOS:
bash run_app.sh - Windows: double-click
run_app.bat(hoặc chạy trong PowerShell/cmd)
Script sẽ:
- Ưu tiên Docker Compose (
docker compose up --build -d). - Chờ backend (8000) và frontend (3000) sẵn sàng; nếu lỗi sẽ in log.
- Tự mở UI tại
http://localhost:3000. - Dừng dịch vụ:
docker compose down.
- Docker Desktop (khuyến nghị) hoặc Python 3.10 + Node 18 nếu chạy local fallback.
- Dataset đã được xử lý sẵn; mô hình đã train nằm trong
models/.
app/backend/FastAPI + tải model Spark pipelineapp/frontend/React + Leaflet UImodels/Mô hình đã huấn luyện (rf_tuned,xgb_spark_tuned,model_metadata.json)notebooks/Quy trình phân tích/huấn luyện chi tiết.github/Ghi chú kỹ thuật, báo cáo tối ưu
- Frontend không lên:
docker compose logs frontend --tail=80 - Backend không lên:
docker compose logs backend --tail=80 - Dừng toàn bộ:
docker compose down