Tài liệu này cung cấp hướng dẫn chi tiết để cài đặt môi trường, chuẩn bị dữ liệu, thực thi toàn bộ mã nguồn của đồ án.
Thông Tin Đồ án
- Tên đồ án: Nhập môn Học máy - Học có giám sát và ứng dụng.
- Môn học: Nhập môn Học máy (CSC14005).
- Giảng viên hướng dẫn: Thầy Lê Nhựt Nam.
- Đơn vị: Khoa học Máy tính, Trường Đại học Khoa học Tự nhiên - ĐHQG.HCM.
Thông Tin Nhóm 14
| Họ và tên | MSSV | Vai trò chính |
|---|---|---|
| Lê Xuân Trí | 23120099 | Xử lý dữ liệu và đánh giá mô hình (Hồi quy) |
| Dương Tuấn Anh | 23120208 | Xây dựng và triển khai các mô hình nền tảng (Hồi quy) |
| Tống Thanh Phúc | 23120158 | Xử lý dữ liệu và đánh giá mô hình (Phân loại) |
| Đàm Tiến Đạt | 23120118 | Xây dựng và triển khai các mô hình nền tảng (Phân loại) |
| Nguyễn Hồ Anh Tuấn | 23120185 | Xây dựng và triển khai các mô hình nâng cao, nghiên cứu tổng hợp |
Dưới đây là cấu trúc cây thư mục chứa các tệp Notebook chính của dự án kèm theo tóm tắt nội dung:
supervised-learning-project/
├── code/
│ ├── Part1_Regression/ # Mã nguồn bài toán Hồi quy (Bike Sharing)
│ │ ├── eda_preprocessing/
│ │ │ ├── 01_eda.ipynb # Phân tích khám phá dữ liệu (EDA)
│ │ │ └── 02_preprocessing.ipynb # Tiền xử lý dữ liệu và trích xuất đặc trưng
│ │ ├── models/
│ │ │ ├── 03_linear_regression.ipynb # Huấn luyện mô hình Hồi quy tuyến tính cơ bản
│ │ │ ├── 04_regularized_regression.ipynb # Hồi quy có kiểm soát (Ridge, Lasso, ElasticNet)
│ │ │ ├── 05_nonlinear_models.ipynb # Các mô hình phi tuyến (Polynomial, kNN, SVR)
│ │ │ └── 06_advanced_regression.ipynb # Các mô hình nâng cao
│ │ ├── evaluation/
│ │ │ └── 07_evaluation.ipynb # Đánh giá, so sánh hiệu suất và phân tích lỗi các mô hình
│ │ └── utils.py # Thư viện tiện ích dùng chung cho bài toán Hồi quy
│ │
│ ├── Part2_Classification/ # Mã nguồn bài toán Phân loại (Forest Cover Type)
│ │ ├── eda_preprocessing/
│ │ │ ├── 01_eda.ipynb # Phân tích khám phá dữ liệu (EDA)
│ │ │ └── 02_preprocessing.ipynb # Tiền xử lý, xử lý mất cân bằng và mã hóa dữ liệu
│ │ ├── models/
│ │ │ ├── 03_classification_model_training.ipynb # Huấn luyện các mô hình phân loại
│ │ │ └── 04_advanced_classification.ipynb # Các mô hình nâng cao
│ │ ├── evaluation/
│ │ │ └── 05_evaluation.ipynb # Đánh giá, so sánh hiệu suất và phân tích lỗi các mô hình
│ │ └── utils.py # Thư viện tiện ích dùng chung cho bài toán Phân loại
│ │
│ └── Part3_Comparison/ # Phân tích chuyên sâu và so sánh tổng hợp
│ ├── part3_comparison_research.ipynb # Chạy các thí nghiệm độ nhạy, nhiễu, hỏng dữ liệu và hội tụ
│ └── part3_pipeline.py # Script Python chạy tự động pipeline thí nghiệm phần 3
├── data/ # Dữ liệu thô và dữ liệu đã xử lý (không commit lên Git)
│ ├── raw/ # Dữ liệu gốc tải về, không chỉnh sửa
│ │ ├── regression/ # Dữ liệu thô bài toán Hồi quy
│ │ │ ├── day.csv # Bike Sharing Dataset — thống kê theo ngày
│ │ │ └── hour.csv # Bike Sharing Dataset — thống kê theo giờ
│ │ └── classification/ # Dữ liệu thô bài toán Phân loại
│ │ └── covtype.csv # Forest Cover Type Dataset
│ └── processed/ # Dữ liệu đã qua tiền xử lý, sẵn sàng cho mô hình
│ ├── regression/ # Được tạo bởi 02_preprocessing.ipynb (Part 1)
│ └── classification/ # Được tạo bởi 02_preprocessing.ipynb (Part 2)
├── requirements.txt # Danh sách các thư viện cần cài đặt
└── README.md # Tài liệu này
Mã nguồn được phát triển và kiểm thử trên môi trường Python 3.11. Để đảm bảo tính tương thích và khả năng tái lập thực nghiệm, vui lòng làm theo các bước thiết lập dưới đây.
Trên hệ điều hành Windows (PowerShell):
py -3.11 -m venv .venv
.\.venv\Scripts\Activate.ps1Trên hệ điều hành macOS hoặc Linux:
python3.11 -m venv .venv
source .venv/bin/activateTiến hành cài đặt các gói phần mềm cần thiết từ tệp requirements.txt:
pip install -r requirements.txtĐể các tệp Notebook nhận diện đúng môi trường ảo vừa tạo, thực hiện đăng ký kernel như sau:
python -m ipykernel install --user --name ml-project-py311Khi mở bất kỳ tệp Notebook nào trong dự án, vui lòng chọn kernel có tên là ml-project-py311.
Do giới hạn về kích thước, các tệp dữ liệu thô (raw data) không được đưa lên kho lưu trữ. Bạn cần tải dữ liệu thủ công theo các bước sau trước khi tiến hành chạy mã nguồn:
- Truy cập trang: https://archive.ics.uci.edu/dataset/275/bike+sharing+dataset
- Tải về và giải nén.
- Đặt 2 tệp
day.csvvàhour.csvvào thư mục:data/raw/regression/
- Truy cập trang: https://www.kaggle.com/datasets/uciml/forest-cover-type-dataset (Yêu cầu có tài khoản Kaggle).
- Tải về bộ dữ liệu.
- Đặt tệp
covtype.csvvào thư mục:data/raw/classification/
Lưu ý: Tuyệt đối không chỉnh sửa nội dung của các tệp dữ liệu thô này sau khi tải về để đảm bảo tính nguyên bản.
Để tái lập toàn bộ kết quả của đồ án, cần chạy lần lượt các phần theo trình tự sau đây.
Lưu ý quan trọng khi chạy Notebook:
- Hãy đảm bảo bạn đã chọn đúng kernel là
ml-project-py311(đã thiết lập ở mục cài đặt). - Trước khi thực thi, vui lòng chọn Restart and Run All để đảm bảo trạng thái môi trường sạch nhất.
Thực thi tuần tự các tệp Notebook trong thư mục code/Part1_Regression/:
eda_preprocessing/01_eda.ipynbeda_preprocessing/02_preprocessing.ipynbmodels/03_linear_regression.ipynbmodels/04_regularized_regression.ipynbmodels/05_nonlinear_models.ipynbmodels/06_advanced_regression.ipynbevaluation/07_evaluation.ipynb
Tiếp tục thực thi tuần tự các tệp Notebook trong thư mục code/Part2_Classification/:
eda_preprocessing/01_eda.ipynbeda_preprocessing/02_preprocessing.ipynbmodels/03_classification_model_training.ipynbmodels/04_advanced_classification.ipynbevaluation/05_evaluation.ipynb
Đối với Phần 3, bạn có thể lựa chọn một trong hai phương pháp để chạy các thí nghiệm tổng hợp (Split Sensitivity, Noise Robustness, Feature Corruption, Convergence Analysis):
Cách 1: Sử dụng Jupyter Notebook
Mở và chạy toàn bộ tệp: code/Part3_Comparison/08_part3_comparison_research.ipynb
Cách 2: Sử dụng tập lệnh Python tự động Chạy trực tiếp tệp pipeline qua giao diện dòng lệnh:
python code/Part3_Comparison/part3_pipeline.pyQuá trình này sẽ tự động tổng hợp kết quả từ Phần 1 và Phần 2, sau đó chạy các thí nghiệm mở rộng và xuất dữ liệu ra thư mục code/Part3_Comparison/results/.