Nén và dựng lại
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 31 trên 51.
Điểm thành phần của một bản quét là một công thức: bắt đầu từ bản quét trung bình, rồi cộng từng mẫu nhân với điểm số tương ứng. inverse_transform làm ngược lại theo công thức để khôi phục 64 điểm ảnh:
pca = PCA(n_components=10).fit(X)
codes = pca.transform(X) # 10 số cho mỗi ảnh quét
rebuilt = pca.inverse_transform(codes) # Trở lại 64 pixelĐây là ba ảnh quét được dựng lại từ ngày càng nhiều số hơn:
Một vài con số tạo ra hình ảnh mờ gần với chữ số trung bình; mỗi thành phần được thêm vào sẽ khôi phục chi tiết. Chỉ với 20 con số thay vì 64, hình ảnh đã rõ nét.
Thử thách
Trung bìnhMột chiếc bút thông minh truyền từng chữ số dưới dạng k số PCA để chương trình đọc. Những gì bị mất?
- Khớp PCA với
kthành phần trênX. Nén tất cả bản quét, rồi dựng lại chúng vàorebuilt. - In các dòng bên dưới; lỗi là độ chênh lệch tuyệt đối trung bình so với
X. - Vẽ bản quét mới nhất,
X[-1], trênaxs[0]và bản dựng lại trênaxs[1], cả hai đều dùnggray_r. Hiển thị.
Với 7:
Sent: 7 numbers per scan instead of 64
Average pixel error: 1.739và vẽ hình này. Sau đó, Coddy mô tả các khung hình của bạn:
Tự làm thử
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
# 1,797 bản quét, mỗi bản gồm 64 pixel; bản quét mới nhất của bút nằm ở hàng cuối
digits = load_digits()
X = digits.data
k = int(input())
# Đừng thay đổi các dòng bên dưới
fig, axs = plt.subplots(1, 2)
axs[0].set_title("Scan")
axs[1].set_title(f"Rebuilt from {k} numbers")
# Viết code bên dưới
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
1Tìm các nhóm
Học không cần nhãnĐo độ tương đồngTự thực hiện K-MeansK-Means trong scikit-learnÔn tập: thành viên phòng gym7PCA trong thực tế
Quan sát 64 chiềuCác thành phần như mẫu hìnhNén và dựng lạiPCA trước khi xây dựng mô hìnhÔn tập: máy quét khuôn mặt10Dự án: Khám phá chữ số
Quan sát các chữ sốThu gọn bằng PCAPhân cụm chữ sốĐặt tên cho các cụmTìm những chữ số khác biệt2Chọn k
Quán tínhPhương pháp khuỷu tayĐiểm số SilhouetteChuẩn hóa thang đo trước khi phân cụmÔn tập: Các vùng giao hàngTự luyện tập: Trình biên dịch Python online