



Preview text:
lOMoAR cPSD| 58490434
Thực hành Phân loại (Classification) và Phân cụm (Clustering) với Bộ dữ liệu MNIST
1. Nhiệm vụ phân loại 1.1. Mục tiêu:
Mục tiêu là phát triển một mô hình có thể phân loại hình ảnh chữ số viết tay (0-9) thành các danh
mục tương ứng bằng thuật toán học máy. - Yêu cầu: Tải bộ dữ liệu:
Tải bộ dữ liệu MNIST bằng các thư viện như tensorflow hoặc scikit-learn.
Bộ dữ liệu bao gồm 60.000 hình ảnh đào tạo và 10.000 hình ảnh thử nghiệm. Mỗi hình
ảnh có kích thước 28x28 pixel.
- Tiền xử lý dữ liệu:
Chuẩn hóa dữ liệu hình ảnh sao cho giá trị pixel nằm trong khoảng từ 0 đến 1.
Chia dữ liệu thành các bộ đào tạo và kiểm tra (đã có trong bộ dữ liệu).
- Lựa chọn mô hình:
Một số thuật toán phân loại phù hợp (ví dụ: Hồi quy logistic, K-Nearest Neighbors).
1: Triển khai bộ phân loại k-Nearest Neighbors (KNN).
2: Sử dụng Logistic Regression hoặc SVM từ scikit-learn để phân loại.
- Huấn luyện mô hình:
Huấn luyện mô hình bằng tập dữ liệu huấn luyện.
Theo dõi quá trình huấn luyện và sử dụng xác thực chéo nếu cần.
Chọn các siêu tham số thích hợp - Đánh giá:
Đánh giá hiệu suất của mô hình trên tập dữ liệu thử nghiệm.
Tính độ chính xác, độ chính xác, độ thu hồi và điểm F1.
Sử dụng ma trận nhầm lẫn để trực quan hóa hiệu suất phân loại cho từng lớp chữ số.
- Trực quan hóa kết quả: lOMoAR cPSD| 58490434
Hiển thị một vài hình ảnh từ tập dữ liệu thử nghiệm cùng với nhãn dự đoán và nhãn thực của chúng.
Vẽ đường cong học tập (độ chính xác/mất mát khi huấn luyện so với xác thực) cho các mạng
nơ-ron hoặc các mô hình khác hỗ trợ đường cong này.
So sánh hiệu suất của các mô hình khác nhau và thảo luận về ưu và nhược điểm của từng phương pháp. lOMoAR cPSD| 58490434
2. Nhiệm vụ phân cụm
- Mục tiêu: Mục tiêu là sử dụng học không giám sát để nhóm các hình ảnh chữ số viết tay
thành các cụm dựa trên mức độ tương đồng. - Yêu cầu: Tải bộ dữ liệu:
Tải bộ dữ liệu MNIST theo cùng cách như trong nhiệm vụ phân loại.
Bạn có thể sử dụng toàn bộ bộ dữ liệu hoặc một tập hợp con (ví dụ: chỉ 10.000 mẫu) để phân cụm.
- Tiền xử lý dữ liệu:
Chuẩn hóa dữ liệu sao cho các giá trị pixel nằm trong khoảng từ 0 đến 1.
Tùy chọn, giảm chiều bằng cách sử dụng Phân tích thành phần chính (PCA) hoặc t-SNE để
cải thiện hiệu suất phân cụm và trực quan hóa.
- Thuật toán phân cụm:
Chọn một số thuật toán phân cụm ( KMeans, DBSCAN).
Áp dụng KMeans với phạm vi giá trị k và tìm k tối ưu bằng Phương pháp Elbow hoặc Điểm Silhouette.
Sử dụng DBSCAN để phân cụm dựa trên mật độ và thử nghiệm với tham số eps.
- Huấn luyện mô hình:
Huấn luyện mô hình phân cụm và chỉ định từng hình ảnh vào một cụm.
Đối với KMeans, hãy thử nghiệm với các giá trị k khác nhau (số cụm) và quan sát kết quả
phân cụm. - Đánh giá:
Vì phân cụm không có giám sát, hãy sử dụng các số liệu đánh giá bên ngoài như Chỉ số Rand
điều chỉnh (ARI) hoặc Thông tin tương hỗ chuẩn hóa (NMI) nếu có nhãn thực.
Hình dung các cụm bằng t-SNE hoặc PCA để giảm chiều và vẽ các cụm ở dạng 2D. Hình dung kết quả:
Vẽ một vài mẫu hình ảnh từ mỗi cụm.
Hiển thị cách các hình ảnh được nhóm thành các cụm khác nhau.
So sánh hiệu suất phân cụm của KMeans với DBSCAN. lOMoAR cPSD| 58490434
Load and preview dataset import matplotlib.pyplot as plt from
tensorflow.keras.datasets import mnist # Load the MNIST dataset
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
# Display the first few images from the training set
num_images_to_show = 10 plt.figure(figsize=(10, 10))
for i in range(num_images_to_show):
plt.subplot(1, num_images_to_show, i+1)
plt.imshow(train_images[i], cmap='gray')
plt.title(f"Label: {train_labels[i]}") plt.axis('off') plt.show()