Menu
CoddyTech

Phép chiếu

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

Phép chiếu đưa từng điểm thẳng xuống một đường thẳng, như một cái bóng. Đây là hai mẫu rượu vang giống hệt nhau từ bài học Quá nhiều đặc trưng, được đặt quanh giá trị trung bình của chúng trên hai đường thẳng:

Hai biểu đồ về cùng một loại rượu vang, với các chấm màu xanh quanh tâm. Bên trái, một đường thẳng chạy dọc theo đám chấm: các bóng màu cam trải rộng dọc theo đường, độ phân tán 1.14. Bên phải, một đường thẳng cắt ngang đám chấm: các bóng tụ lại gần nhau, độ phân tán 0.30

Dọc theo đám mây, các bóng giữ lại phần lớn độ phân tán, nên một con số cho mỗi loại rượu gần như thể hiện được điều mà hai con số đã thể hiện.

Hướng là hai số có bình phương cộng lại bằng 1, chẳng hạn như (0.6, 0.8). Hình chiếu là một tổng có trọng số:

centered = X - X.mean(axis=0)
shadow = centered[:, 0] * 0.6 + centered[:, 1] * 0.8
print(round(shadow.std(), 3))

Lệnh này in ra 1.136. Hướng tốt nhất giữ được độ phân tán lớn nhất.

challenge icon

Thử thách

Trung bình

Một kiểm lâm muốn biểu diễn mỗi quả thông bằng một số thay vì chiều dài và chiều rộng. Trong hai hướng, hướng nào giữ lại độ phân tán của các quả thông nhiều hơn? Chương trình đọc hai hướng, mỗi hướng gồm hai số.

  1. Viết spread_along(direction): độ lệch chuẩn của hình chiếu các quả thông lên hướng đó.
  2. In độ phân tán theo cả hai hướng, với 3 chữ số thập phân.
  3. In hướng cần giữ lại.

Với những quả thông khác:

Along [0.6, 0.8]: spread 2.104
Along [0.8, -0.6]: spread 0.412
Keep [0.6, 0.8]

Tự làm thử

import numpy as np
import pandas as pd

# Một nhân viên lâm nghiệp đã đo chiều dài và chiều rộng của 70 quả thông, tính bằng cm
cones = pd.read_csv("cones.csv")
X = np.column_stack([cones["length_cm"], cones["width_cm"]])
first = [float(input()), float(input())]
second = [float(input()), float(input())]

# 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