Menu
CoddyTech

Phân cụm chữ số

Thuộc phần Học không giám sát trong hành trình Machine Learning của Coddy. Bài học 45 trên 51.

Giờ đến bước khám phá. Yêu cầu k-means chia 13 con số trong mỗi bản quét thành 10 nhóm, mỗi nhóm ứng với một chữ số mà bạn hy vọng thuật toán sẽ tìm ra. Thuật toán không bao giờ thấy nhãn:

km = KMeans(n_clusters=10, n_init=10, random_state=0).fit(X_small)

Một tâm nằm trong không gian PCA, nơi k-means hoạt động: 13 con số, không có hình ảnh. pca.inverse_transform dựng lại 64 pixel của tâm đó:

Bên trái là biểu đồ cột gồm 13 con số của một tâm k-means, hai cột đầu cao, các cột sau nhỏ. Bên phải là hình ảnh 8 x 8 mờ được dựng lại từ cùng tâm đó, trông giống số 0

value_counts() liệt kê các cụm từ lớn nhất đến nhỏ nhất, nên bộ sưu tập các tâm cụm trông như một bản thống kê về các ảnh quét.

challenge icon

Thử thách

Trung bình

Mã khởi đầu chứa các ảnh quét và X_small, phiên bản gồm 13 số của chúng.

  1. Tìm 10 cụm trong X_small bằng k-means.
  2. Khôi phục 64 pixel của mỗi tâm cụm.
  3. Vẽ bộ sưu tập gồm 2 hàng, 5 cột, sắp xếp cụm lớn nhất trước: hiển thị mỗi tâm cụm dưới dạng ảnh 8 × 8 bằng gray_r, đặt tiêu đề là kích thước cụm, chẳng hạn 120 scans. Chỉnh bố cục cho gọn rồi hiển thị.

Nếu dùng 5 cụm, kết quả sẽ trông như sau:

Năm tâm chữ số mờ xếp thành một hàng, có tiêu đề lần lượt là 531, 367, 363, 359 và 177 ảnh quét

Bài của bạn có 10 cụm. Coddy mô tả từng biểu đồ. k-means tự tìm ra những chữ số nào?

Tự làm thử

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans

# Từ phần Xem các chữ số: 1,797 ảnh quét, mỗi ảnh có 64 pixel, mức mực từ 0 đến 16
digits = load_digits()
X = digits.data
y = digits.target

# Từ phần Thu gọn bằng PCA: 13 số cho mỗi ảnh quét giữ lại 80% phương sai
pca = PCA(n_components=0.8)
X_small = pca.fit_transform(X)

# Viết code của bạn bên dưới
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Học không giám sát

Tự luyện tập: Trình biên dịch Python online