Ôn tập: máy quét khuôn mặt
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 33 trên 51.
Thử thách
Trung bìnhCamera ở cửa văn phòng có thể chỉ lưu giữ k số cho mỗi khuôn mặt; chương trình đọc k. Đoạn code khởi đầu tạo 300 khuôn mặt có kích thước 16 x 16 pixel và lưu vào X.
- Khớp PCA với
kthành phần. In ra tỷ lệ phương sai được giữ lại như bên dưới. - Vẽ khuôn mặt 0 trên
axs[0]và ảnh dựng lại từksố trênaxs[1], cả hai đều dùngcmap="gray". - Vẽ thành phần 1 trên
axs[2]bằngcmap="gray_r". Hiển thị.
Với một camera khác và 4:
Kept: 80.5% of the variance with 4 numbers per faceSau đó, Coddy mô tả ba ô hình của bạn.
Tự làm thử
import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
# Vẽ count khuôn mặt, mỗi khuôn mặt có kích thước 16 × 16 pixel và được biểu diễn bằng một hàng phẳng gồm 256 giá trị độ sáng (từ 0 đến 1)
def make_faces(count, seed):
rng = np.random.default_rng(seed)
cols, rows = np.meshgrid(np.arange(16), np.arange(16))
faces = []
for i in range(count):
light = rng.uniform(0.55, 0.95)
side = rng.uniform(-0.25, 0.25)
head = ((cols - 7.5) / 6.2) ** 2 + ((rows - 8) / 7.6) ** 2 < 1
face = head * (light + side * (cols - 7.5) / 7.5)
eye_row = rng.uniform(5, 7)
gap = rng.uniform(2.2, 3.6)
for eye_col in [7.5 - gap, 7.5 + gap]:
face = face - 0.7 * np.exp(-((cols - eye_col) ** 2 + (rows - eye_row) ** 2) / 1.2)
smile = rng.uniform(-2, 2)
mouth_row = 11.5 - smile * ((cols - 7.5) / 3.5) ** 2
mouth = np.exp(-((rows - mouth_row) ** 2) / 0.4) * (np.abs(cols - 7.5) < 3.6)
face = face - 0.6 * mouth + rng.normal(0, 0.04, size=(16, 16))
faces.append(np.clip(face, 0, 1).flatten())
return np.round(np.array(faces), 2)
# 300 khuôn mặt mà camera cửa đã ghi lại và số lượng số có thể giữ lại cho mỗi khuôn mặt
X = make_faces(300, seed=7)
k = int(input())
# Đừng thay đổi các dòng bên dưới
fig, axs = plt.subplots(1, 3)
axs[0].set_title("Face")
axs[1].set_title(f"Rebuilt from {k}")
axs[2].set_title("Component 1")
# Viết code của bạn bên dưới
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