Menu
CoddyTech

Quan sát các 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 43 trên 51.

Dự án gần nhất của bạn: 1.797 bản quét chữ viết tay và không có giáo viên. Qua năm bài học, bạn sẽ tìm thấy những nhóm như thế này mà không cần đọc bất kỳ nhãn nào:

Mười hình chữ số màu xám mờ, xếp thành hai hàng, là tâm của mười nhóm mà k-means tìm thấy trong các bản quét: số 9, số 1 hoặc số 8 bị mờ, số 7, số 6, số 2, số 0, số 3, số 4, số 5 và một số 1 nét mảnh

Mỗi dự án đều bắt đầu bằng việc quan sát. Độ phân tán của một pixel, tức độ lệch chuẩn của pixel đó qua nhiều bản quét, cho thấy những chỗ người viết không đồng nhất. Ở đây là độ phân tán của mọi số 7:

Lưới 8 × 8 thể hiện độ phân tán pixel của các số 7, màu xanh đậm hơn biểu thị độ phân tán lớn hơn: cao dọc theo nét ngang phía trên và nét dọc đi xuống, bằng 0.0 ở cạnh trái và góc dưới bên phải

spread = X[y == 7].std(axis=0)
print((spread == 0).sum())

Lệnh này in ra 15: cứ mỗi nhóm 7 pixel thì có 15 pixel trống. Một pixel không bao giờ thay đổi sẽ không cung cấp thông tin gì cho mô hình.

challenge icon

Thử thách

Trung bình

Bắt đầu khám phá. Mã khởi đầu tải các ảnh quét vào X, các chữ số vào y và thiết lập biểu đồ.

  1. Tìm độ phân tán của từng pixel trên tất cả ảnh quét. In ra hàng, cột và độ phân tán của pixel có độ phân tán lớn nhất (2 chữ số thập phân), sau đó in ra số pixel luôn để trống trong mọi ảnh quét.
  2. Vẽ chúng thành hình 8 x 8 trên ax, dùng cmap="Blues" cùng thanh màu. Hiển thị hình.

Chỉ xét các số 1:

Busiest pixel: row 6, column 5 (spread 6.53)
Blank in every scan: 12 pixels

Hình 8 x 8 có tiêu đề Where Writers Disagree cùng một thanh màu: độ phân tán của từng pixel trên các số 1, hàng và cột được đánh số từ 0 đến 7: hai dải tối ở giữa, nơi người viết đặt nét ở các vị trí khác nhau, và hai mép trái phải nhạt màu

Hình của bạn bao quát cả 1.797 ảnh quét. Coddy mô tả hình của bạn. Người viết bất đồng nhiều nhất ở đâu?

Tự làm thử

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits

# 1,797 ảnh quét chữ số viết tay: mỗi ảnh có 64 điểm ảnh (8 nhân 8, mức mực từ 0 đến 16) và chữ số tương ứng
digits = load_digits()
X = digits.data
y = digits.target

fig, ax = plt.subplots()
ax.set_title("Where Writers Disagree")

# 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