Menu
CoddyTech

Các thành phần như mẫu hình

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 30 trên 51.

PCA đã xem xét điều gì? Mỗi thành phần gồm 64 trọng số, mỗi pixel có một trọng số, và components_ chứa một hàng cho mỗi thành phần:

pca = PCA(n_components=4).fit(X)
print(pca.components_.shape)

Lệnh này in ra (4, 64). Đổi hình dạng một hàng thành 8 nhân 8, bạn sẽ có một bức ảnh. cmap="gray_r" là thang xám đảo ngược: trọng số lớn có màu tối, trọng số âm có màu sáng:

ax.imshow(pca.components_[0].reshape(8, 8), cmap="gray_r")

Bốn thành phần đầu tiên của các chữ số dưới dạng ảnh 8 nhân 8, màu xám khi trọng số gần bằng không, màu tối khi trọng số lớn, màu sáng khi trọng số âm

Thành phần 1 có màu tối ở những nơi số 4 và số 6 có mực, nên chúng nằm ở phía bên phải của bản đồ. Một lần quét đạt điểm cao khi mực của nó rơi vào các điểm ảnh tối.

challenge icon

Thử thách

Trung bình

Một giáo viên thư pháp muốn xem cách mọi người viết một chữ số. Chương trình đọc chữ số đó, còn phần code khởi đầu lưu các bản quét vào X.

  1. Khớp PCA với 3 thành phần trên X.
  2. Vẽ thành phần i trên axs[i] thành hình ảnh 8 nhân 8 với cmap="gray_r", đặt tiêu đề từ Component 1 đến Component 3.
  3. Hiển thị biểu đồ.

Với các số 2, chương trình vẽ như sau. Sau đó, Coddy mô tả các khung hình của bạn:

Ba hình ảnh thành phần 8 nhân 8 của các số 2 viết tay, có tiêu đề Component 1, Component 2 và Component 3, mỗi hình có các nét đậm và nhạt riêng

Tự làm thử

import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA

# Mỗi ảnh quét của một chữ số đọc từ đầu vào: 64 pixel trên mỗi hàng
d = int(input())
digits = load_digits()
X = digits.data[digits.target == d]

# Đừng thay đổi dòng bên dưới
fig, axs = plt.subplots(1, 3)

# Viết code 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