final22
This commit is contained in:
parent
ed140dade9
commit
ab717695d5
|
|
@ -0,0 +1,257 @@
|
||||||
|
# 📁 Cấu Trúc Project - Tóm Tắt
|
||||||
|
|
||||||
|
## 🎯 Tổng Quan Nhanh
|
||||||
|
|
||||||
|
**Mục đích:** Dự đoán số nhân sự cần thiết cho mỗi ca làm việc dựa trên đặc điểm tòa nhà và công việc.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 Luồng Dữ Liệu
|
||||||
|
|
||||||
|
```
|
||||||
|
data_raw/
|
||||||
|
├── Link LLV 1_5_2025.json → Thông tin ca làm việc, công việc
|
||||||
|
└── Link LLV 2025_clean.json → Đặc điểm vật lý tòa nhà (diện tích TỔNG các tầng)
|
||||||
|
↓
|
||||||
|
[Tiền xử lý & Feature Engineering]
|
||||||
|
↓
|
||||||
|
final_2.csv/xlsx → Dataset training (đã có text features)
|
||||||
|
↓
|
||||||
|
[ML Training Pipeline]
|
||||||
|
↓
|
||||||
|
artifacts/ → Models đã train
|
||||||
|
outputs/ → Kết quả validation
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 Luồng Prediction
|
||||||
|
|
||||||
|
```
|
||||||
|
input.json (1 ca làm việc)
|
||||||
|
↓
|
||||||
|
all_predict.py
|
||||||
|
├── Gọi predict.py → Trích xuất keyword features từ text
|
||||||
|
├── Tiền xử lý các trường diện tích, đặc điểm tòa nhà
|
||||||
|
├── Kết hợp tất cả features
|
||||||
|
├── Load model từ artifacts/
|
||||||
|
└── Dự đoán
|
||||||
|
↓
|
||||||
|
Output: Số nhân sự cần thiết
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📂 Cấu Trúc Thư Mục
|
||||||
|
|
||||||
|
### 📁 **data_raw/** - Dữ liệu gốc
|
||||||
|
- `Link LLV 1_5_2025.json` - Ca làm việc, công việc normal + dinhky
|
||||||
|
- `Link LLV 2025_clean.json` - Diện tích tòa nhà (⚠️ TỔNG các tầng)
|
||||||
|
|
||||||
|
### 📁 **artifacts/** - Models
|
||||||
|
- `extratrees_log1p.joblib` - Model chính
|
||||||
|
- `extratrees_staff_model.joblib` - Model dự đoán nhân sự
|
||||||
|
- `model_meta.joblib` - Metadata
|
||||||
|
- `X_proc_columns.joblib` - Danh sách features
|
||||||
|
|
||||||
|
### 📁 **outputs/** - Kết quả
|
||||||
|
- `val_predictions_extratrees.csv` - So sánh y_true vs y_pred trên validation set
|
||||||
|
|
||||||
|
### 📁 **models/** - Models cũ
|
||||||
|
- Các models từ thử nghiệm trước
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 Files Script Chính
|
||||||
|
|
||||||
|
### 1. **predict.py** 🔤
|
||||||
|
**Vai trò:** Trích xuất keyword features từ text công việc
|
||||||
|
|
||||||
|
**Input:**
|
||||||
|
- `task_normal` (str): Công việc hằng ngày
|
||||||
|
- `task_dinhky` (str): Công việc định kỳ tuần/tháng
|
||||||
|
|
||||||
|
**Output:**
|
||||||
|
- JSON string chứa 18 text features
|
||||||
|
|
||||||
|
**Được gọi bởi:** `all_predict.py`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. **all_predict.py** 🎯
|
||||||
|
**Vai trò:** Script chính để dự đoán
|
||||||
|
|
||||||
|
**Workflow:**
|
||||||
|
1. Đọc `input.json`
|
||||||
|
2. **Gọi `predict.py`** để trích xuất keyword features
|
||||||
|
3. Tiền xử lý các trường khác (diện tích, đặc điểm tòa nhà)
|
||||||
|
4. Kết hợp tất cả features
|
||||||
|
5. Load model từ `artifacts/`
|
||||||
|
6. Dự đoán và trả về kết quả
|
||||||
|
|
||||||
|
**Input:** `input.json` (1 ca làm việc)
|
||||||
|
**Output:** Số nhân sự dự đoán
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. **extract_25_features_new.py** 📊
|
||||||
|
**Vai trò:** Trích xuất features từ text (phiên bản đầy đủ)
|
||||||
|
|
||||||
|
Tương tự `predict.py` nhưng với nhiều features hơn
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 4. **merge_all_features.py** 🔗
|
||||||
|
**Vai trò:** Gộp features từ nhiều nguồn
|
||||||
|
|
||||||
|
Tạo dataset hoàn chỉnh cho training
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📄 Files Dữ Liệu
|
||||||
|
|
||||||
|
### **final_2.csv / final_2.xlsx** 📈
|
||||||
|
**Vai trò:** Dataset chính để training model
|
||||||
|
|
||||||
|
**Nguồn:**
|
||||||
|
- Ca làm việc ← `Link LLV 1_5_2025.json`
|
||||||
|
- Diện tích tòa nhà ← `Link LLV 2025_clean.json` (⚠️ TỔNG các tầng)
|
||||||
|
- Text features ← Trích xuất từ `all_task_normal` + `all_task_dinhky`
|
||||||
|
|
||||||
|
**Features:**
|
||||||
|
- Thông tin ca: `ca_sang`, `ca_chieu`, `ca_toi`, `ca_dem`
|
||||||
|
- Diện tích: `dien_tich_hanh_lang`, `dien_tich_wc`, v.v.
|
||||||
|
- Text features: `num_cleaning_tasks`, `cleaning_ratio`, v.v.
|
||||||
|
- Target: `so_nhan_su`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### **input.json** 🎯
|
||||||
|
**Vai trò:** File input mẫu cho prediction
|
||||||
|
|
||||||
|
**Nội dung:**
|
||||||
|
- Thông tin tòa nhà: `ma_dia_diem`, `so_tang`, `so_cua_thang_may`
|
||||||
|
- Thông tin ca: `loai_ca`, `bat_dau`, `ket_thuc`, `tong_gio_lam`
|
||||||
|
- Công việc:
|
||||||
|
- `all_task_normal` - Công việc **HẰNG NGÀY**
|
||||||
|
- `all_task_dinhky` - Công việc **ĐỊNH KỲ (tuần/tháng)**
|
||||||
|
- Diện tích: `dien_tich_*` (⚠️ TỔNG các tầng)
|
||||||
|
- Đặc điểm: `doc_ham`, `op_tuong`, v.v.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### **input_explained.jsonc** 📚
|
||||||
|
**Vai trò:** File giải thích chi tiết các trường trong input.json
|
||||||
|
|
||||||
|
Có comments đầy đủ (file JSONC)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📓 Notebooks
|
||||||
|
|
||||||
|
### **All_feature_Readme.ipynb**
|
||||||
|
Chi tiết về text features
|
||||||
|
|
||||||
|
### **ML_Training_Pipeline_Complete.ipynb**
|
||||||
|
Pipeline training model hoàn chỉnh
|
||||||
|
|
||||||
|
### **ML_Training_Pipeline.ipynb**
|
||||||
|
Pipeline training cơ bản
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📖 Documentation
|
||||||
|
|
||||||
|
### **README.md** 📘
|
||||||
|
Tài liệu chính của project
|
||||||
|
|
||||||
|
### **TASK_TYPES_GUIDE.md** 📋
|
||||||
|
Hướng dẫn phân biệt 2 loại công việc:
|
||||||
|
- `all_task_normal` (hằng ngày)
|
||||||
|
- `all_task_dinhky` (định kỳ tuần/tháng)
|
||||||
|
|
||||||
|
### **COMPLETE_25_FEATURES.md** 📝
|
||||||
|
Giải thích 25 features được trích xuất
|
||||||
|
|
||||||
|
### **ML_PIPELINE_PLAN.md** 🗺️
|
||||||
|
Kế hoạch pipeline ML
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ Lưu Ý Quan Trọng
|
||||||
|
|
||||||
|
### 1. Về Diện Tích
|
||||||
|
> **Tất cả diện tích là TỔNG của TẤT CẢ các tầng!**
|
||||||
|
>
|
||||||
|
> Ví dụ: 12 tầng × 150m²/tầng = 1800m²
|
||||||
|
>
|
||||||
|
> KHÔNG PHẢI 150m²!
|
||||||
|
|
||||||
|
### 2. Về Công Việc
|
||||||
|
- `all_task_normal`: Làm **MỖI NGÀY**
|
||||||
|
- `all_task_dinhky`: Làm **THEO TUẦN/THÁNG**
|
||||||
|
- Model **GỘP CẢ 2** để phân tích
|
||||||
|
|
||||||
|
### 3. Về Pipeline Prediction
|
||||||
|
```
|
||||||
|
input.json → all_predict.py → predict.py → features → model → output
|
||||||
|
↓
|
||||||
|
[Tiền xử lý các trường khác]
|
||||||
|
↓
|
||||||
|
[Kết hợp features]
|
||||||
|
↓
|
||||||
|
[Load model]
|
||||||
|
↓
|
||||||
|
[Predict]
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Quick Start
|
||||||
|
|
||||||
|
### Dự đoán cho 1 ca:
|
||||||
|
```bash
|
||||||
|
# 1. Chuẩn bị input.json
|
||||||
|
# 2. Chạy prediction
|
||||||
|
python all_predict.py
|
||||||
|
|
||||||
|
# 3. Xem kết quả
|
||||||
|
```
|
||||||
|
|
||||||
|
### Xem kết quả validation:
|
||||||
|
```bash
|
||||||
|
# Mở file outputs/val_predictions_extratrees.csv
|
||||||
|
# Cột: y_true (thực tế), y_pred (dự đoán), error
|
||||||
|
```
|
||||||
|
|
||||||
|
### Test keyword extraction:
|
||||||
|
```python
|
||||||
|
from predict import extract_text_features_to_json
|
||||||
|
|
||||||
|
json_result = extract_text_features_to_json(
|
||||||
|
"Lau sàn WC; Thu rác",
|
||||||
|
"Cọ bồn cầu; Đánh sàn"
|
||||||
|
)
|
||||||
|
print(json_result)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📞 Tài Liệu Tham Khảo
|
||||||
|
|
||||||
|
| Thắc mắc về... | Xem tài liệu |
|
||||||
|
|----------------|--------------|
|
||||||
|
| Tổng quan project | `README.md` |
|
||||||
|
| Phân loại công việc | `TASK_TYPES_GUIDE.md` |
|
||||||
|
| Text features | `All_feature_Readme.ipynb` |
|
||||||
|
| Input format | `input_explained.jsonc` |
|
||||||
|
| Pipeline | `README.md` → Pipeline Dự Đoán |
|
||||||
|
| Validation | `outputs/val_predictions_extratrees.csv` |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
**✅ Đọc `README.md` để biết chi tiết hơn!**
|
||||||
|
|
||||||
|
</div>
|
||||||
Loading…
Reference in New Issue