Update README.md
Browse files
README.md
CHANGED
|
@@ -13,9 +13,86 @@ short_description: Predict the weather of Saigon
|
|
| 13 |
license: unknown
|
| 14 |
---
|
| 15 |
|
| 16 |
-
|
|
|
|
| 17 |
|
| 18 |
-
|
| 19 |
|
| 20 |
-
|
| 21 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
license: unknown
|
| 14 |
---
|
| 15 |
|
| 16 |
+
🌦️ Saigon Temperature Forecasting Application
|
| 17 |
+
Một ứng dụng web tương tác được xây dựng bằng Streamlit để dự báo thời tiết tại TP. Hồ Chí Minh (Sài Gòn). Ứng dụng này cung cấp cả dự báo 5 ngày (hàng ngày) sử dụng mô hình Stacking và dự báo 24 giờ (hàng giờ) sử dụng 24 mô hình LightGBM chuyên biệt.
|
| 18 |
|
| 19 |
+
(Gợi ý: Bạn nên chụp ảnh màn hình ứng dụng của mình, tải lên một dịch vụ như Imgur và dán URL vào đây để thay thế dòng trên.)
|
| 20 |
|
| 21 |
+
✨ Các tính năng chính
|
| 22 |
+
Ứng dụng được tổ chức thành bốn tab chính:
|
| 23 |
+
|
| 24 |
+
📑 Project Overview & Methodology
|
| 25 |
+
Tổng quan Dự án: Giải thích mục tiêu và nguồn dữ liệu (10 năm từ Visual Crossing).
|
| 26 |
+
|
| 27 |
+
Chiến lược "Two-Stream": Mô tả lý do sử dụng 2 mô hình khác nhau:
|
| 28 |
+
|
| 29 |
+
Mô hình Stacking (Hàng ngày): Cho dự báo 5 ngày, kết hợp sức mạnh của nhiều mô hình.
|
| 30 |
+
|
| 31 |
+
Mô hình Direct (Hàng giờ): 24 mô hình LGBM riêng biệt cho dự báo 24 giờ.
|
| 32 |
+
|
| 33 |
+
Bảng xếp hạng (Leaderboard): Hiển thị 10 mô hình hàng đầu trong quá trình thử nghiệm, chứng minh lý do chọn mô hình "Champion".
|
| 34 |
+
|
| 35 |
+
🌦️ Live 5-Day Forecast (Dự báo 5 ngày)
|
| 36 |
+
Chọn ngày: Cho phép người dùng chọn một ngày bất kỳ trong tập dữ liệu kiểm tra (test set).
|
| 37 |
+
|
| 38 |
+
Dự báo 5 ngày: Hiển thị nhiệt độ dự đoán và nhiệt độ thực tế (nếu có) cho 5 ngày tiếp theo.
|
| 39 |
+
|
| 40 |
+
Forecast Insights (Why?): Tự động tạo ra các nhận định (insight) dựa trên dữ liệu đầu vào (ví dụ: "Hôm qua trời rất nóng...").
|
| 41 |
+
|
| 42 |
+
Feature Inspector: Một khu vực có thể thu gọn để kiểm tra các giá trị (features) quan trọng mà mô hình đã "nhìn thấy" khi đưa ra dự đoán.
|
| 43 |
+
|
| 44 |
+
Biểu đồ Trực quan:
|
| 45 |
+
|
| 46 |
+
Training Set Overview: Biểu đồ toàn bộ dữ liệu huấn luyện với thanh trượt (slider).
|
| 47 |
+
|
| 48 |
+
Historical Context: So sánh 14 ngày lịch sử (thực tế) với 5 ngày dự báo (dự đoán).
|
| 49 |
+
|
| 50 |
+
Forecast vs. Actual: Tự động so sánh dự báo (màu đỏ) với thực tế (màu xanh) nếu có đủ dữ liệu.
|
| 51 |
+
|
| 52 |
+
📊 Model Performance & Diagnostics (Hiệu suất Mô hình)
|
| 53 |
+
Performance Degradation: Biểu đồ đường cho thấy lỗi (RMSE) và độ chính xác (R²) của mô hình thay đổi như thế nào từ Ngày 1 đến Ngày 5.
|
| 54 |
+
|
| 55 |
+
Interactive Slider: Một thanh trượt cho phép người dùng chọn ngày dự báo (1-5) và xem biểu đồ phân tán (scatter plot) so sánh Dự báo vs. Thực tế cho riêng ngày đó.
|
| 56 |
+
|
| 57 |
+
Champion Model Diagnostics: Phân tích sâu về lỗi (residuals) của mô hình để chứng minh tính ổn định.
|
| 58 |
+
|
| 59 |
+
⏱️ Hourly Prediction (Dự báo 24 giờ)
|
| 60 |
+
Chọn Thời gian: Cho phép người dùng chọn Ngày và Giờ để bắt đầu dự báo.
|
| 61 |
+
|
| 62 |
+
Metrics 24 giờ: Hiển thị các dự đoán điểm (T+2h, T+3h, T+24h) và các giá trị tổng hợp (Trung bình, Cao nhất) cùng với giá trị thực tế (nếu có).
|
| 63 |
+
|
| 64 |
+
Biểu đồ Lịch sử & Dự báo (Hàng giờ): Hiển thị 24 giờ lịch sử (thực tế) và 24 giờ dự báo (dự đoán).
|
| 65 |
+
|
| 66 |
+
Biểu đồ So sánh (Hàng giờ): Tự động so sánh 24 giờ dự báo (màu đỏ) với 24 giờ thực tế (màu xanh).
|
| 67 |
+
|
| 68 |
+
Model Reliability: Biểu đồ đường RMSE cho thấy lỗi của mô hình hàng giờ tăng lên như thế nào từ T+1h đến T+24h.
|
| 69 |
+
|
| 70 |
+
🛠️ Công nghệ sử dụng (Tech Stack)
|
| 71 |
+
Frontend: Streamlit, Plotly
|
| 72 |
+
|
| 73 |
+
Xử lý Dữ liệu: Pandas, NumPy
|
| 74 |
+
|
| 75 |
+
Mô hình ML: Scikit-learn (cho Stacking), LightGBM (cho mô hình hàng giờ)
|
| 76 |
+
|
| 77 |
+
Tải mô hình: Joblib
|
| 78 |
+
|
| 79 |
+
📂 Cấu trúc Dự án
|
| 80 |
+
/
|
| 81 |
+
├── app.py # Script Streamlit chính
|
| 82 |
+
├── requirements.txt # Các thư viện Python cần thiết
|
| 83 |
+
├── README.md # File bạn đang đọc
|
| 84 |
+
│
|
| 85 |
+
├── data/
|
| 86 |
+
│ ├── final_dataset_tree.csv # Dữ liệu features/targets hàng ngày
|
| 87 |
+
│ ├── final_hourly_feature_dataset.csv # Dữ liệu features/targets hàng giờ
|
| 88 |
+
│ ├── final_5_day_results_df.csv # Dữ liệu hiệu suất (RMSE/R2) hàng ngày
|
| 89 |
+
│ ├── hourly_120h_evaluation_results.csv # Dữ liệu hiệu suất (RMSE) hàng giờ
|
| 90 |
+
│ └── results_df_all_tuned.csv # Dữ liệu leaderboard
|
| 91 |
+
│
|
| 92 |
+
├── models/
|
| 93 |
+
│ ├── champion_stacking_day1.pkl # ... (5 mô hình hàng ngày)
|
| 94 |
+
│ └── lgbm_model_target_temp_next_1h.pkl # ... (24 mô hình hàng giờ)
|
| 95 |
+
│
|
| 96 |
+
└── src/
|
| 97 |
+
├── benchmark_utils.py # Hàm tải leaderboard
|
| 98 |
+
└── diagnostic_plots.py # Hàm vẽ biểu đồ hiệu suất
|