Menu
CoddyTech

Dự đoán bằng đường thẳng

Thuộc phần Thống kê cho machine learning trong hành trình Machine Learning của Coddy. Bài học 38 trên 64.

Đường thẳng khớp là một cỗ máy dự đoán nhỏ: đưa vào x mới, nhận lại y. Một chú chó con được cân từ tuần thứ 8 đến tuần thứ 20:

weeks = np.array([8, 10, 12, 14, 16, 18, 20])
kg = np.array([3.1, 4.0, 5.2, 6.1, 7.0, 8.2, 9.1])
slope, intercept = np.polyfit(weeks, kg, 1)
new_weeks = np.array([15, 52])
print(np.round(slope * new_weeks + intercept, 1))

Lệnh này in ra [ 6.6 25.2]. Tuần 15 nằm trong dữ liệu. Tuần 52 thì không, và đường thẳng tiếp tục tăng cao mãi sau khi chú chó ngừng lớn:

Bảy lần cân từ tuần 8 đến tuần 20 trên một đường thẳng khớp với dữ liệu. Đường thẳng tiếp tục bằng nét đứt vào vùng tô bóng được đánh dấu là nằm ngoài dữ liệu, đạt 25.2 kg ở tuần 52, trong khi đường cong chấm của một chú chó thật chững lại ở gần mức 13 kg

Dự đoán nằm ngoài phạm vi dữ liệu gọi là ngoại suy, và việc này khá rủi ro: mô hình chỉ đáng tin cậy với các đầu vào tương tự những gì nó đã học. Trước tiên, hãy kiểm tra:

week = 52
print(week >= weeks.min() and week <= weeks.max())

Lệnh này in ra False.

challenge icon

Thử thách

Trung bình

Chiều cao của một cây nến được đo mỗi giờ khi nến cháy, từ giờ 0 đến giờ 6: hours và height tính bằng cm. Chương trình đọc new_hours.

  1. Khớp đường thẳng dự đoán height từ hours.
  2. In giá trị dự đoán cho new_hours, làm tròn đến 2 chữ số thập phân.
  3. In xem new_hours có nằm trong khoảng giờ của dữ liệu hay không, bao gồm cả hai đầu mút.

Với đầu vào 4.5:

Predicted height: 13.07 cm
Inside the data: yes

Tự làm thử

import numpy as np

hours = np.array([0, 1, 2, 3, 4, 5, 6])
height = np.array([20.0, 18.4, 17.1, 15.3, 13.9, 12.2, 10.8])
new_hours = 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 Thống kê cho machine learning

Tự luyện tập: Trình biên dịch Python online