Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

109 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Đồ Án 1: Học Có Giám Sát - Nhóm 14

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.


1. Thông Tin về Đồ Án và Nhóm

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

2. Cấu Trúc Thư Mục Dự Án

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

3. Cài Đặt Môi Trường

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.

3.1 Khởi tạo môi trường ảo

Trên hệ điều hành Windows (PowerShell):

py -3.11 -m venv .venv
.\.venv\Scripts\Activate.ps1

Trên hệ điều hành macOS hoặc Linux:

python3.11 -m venv .venv
source .venv/bin/activate

3.2 Cài đặt các thư viện phụ thuộc

Tiế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

3.3 Đăng ký Kernel cho Jupyter Notebook

Để 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-py311

Khi 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.


4. Chuẩn Bị Dữ Liệu (Bắt Buộc)

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:

4.1 Dữ liệu bài toán Hồi quy (Bike Sharing Dataset)

  1. Truy cập trang: https://archive.ics.uci.edu/dataset/275/bike+sharing+dataset
  2. Tải về và giải nén.
  3. Đặt 2 tệp day.csvhour.csv vào thư mục: data/raw/regression/

4.2 Dữ liệu bài toán Phân loại (Forest Cover Type)

  1. Truy cập trang: https://www.kaggle.com/datasets/uciml/forest-cover-type-dataset (Yêu cầu có tài khoản Kaggle).
  2. Tải về bộ dữ liệu.
  3. Đặt tệp covtype.csv và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.


5. Hướng Dẫn Chạy Mã Nguồ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.

5.1 Phần 1 - Bài toán Hồi quy (Regression)

Thực thi tuần tự các tệp Notebook trong thư mục code/Part1_Regression/:

  1. eda_preprocessing/01_eda.ipynb
  2. eda_preprocessing/02_preprocessing.ipynb
  3. models/03_linear_regression.ipynb
  4. models/04_regularized_regression.ipynb
  5. models/05_nonlinear_models.ipynb
  6. models/06_advanced_regression.ipynb
  7. evaluation/07_evaluation.ipynb

5.2 Phần 2 - Bài toán Phân loại (Classification)

Tiếp tục thực thi tuần tự các tệp Notebook trong thư mục code/Part2_Classification/:

  1. eda_preprocessing/01_eda.ipynb
  2. eda_preprocessing/02_preprocessing.ipynb
  3. models/03_classification_model_training.ipynb
  4. models/04_advanced_classification.ipynb
  5. evaluation/05_evaluation.ipynb

5.3 Phần 3 - So sánh và Phân tích chuyên sâu (Comparison)

Đố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.py

Quá 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/.


About

Lab Project 1 - Introduction to Machine Learning (CSC14005) - HCMUS

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages