Menu
CoddyTech

Vẽ đường khớp

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

Hai con số mô tả một đường khớp; chỉ biểu đồ mới cho thấy đường đó có bám sát dữ liệu hay không. Một căn bếp đã đo thời gian đun sôi của sáu ấm nước. Vẽ đường thẳng trên cùng ax với biểu đồ phân tán:

liters = np.array([0.5, 0.8, 1.0, 1.2, 1.5, 1.7])
minutes = np.array([1.6, 2.4, 2.7, 3.3, 3.9, 4.5])
slope, intercept = np.polyfit(liters, minutes, 1)
xs = np.linspace(liters.min(), liters.max(), 50)
fig, ax = plt.subplots()
ax.scatter(liters, minutes, label="Boils")
ax.plot(xs, slope * xs + intercept, color="C1", label="Fit")
ax.legend()
plt.show()

xs chạy từ x nhỏ nhất đến x lớn nhất, vì vậy đường thẳng bắt đầu và kết thúc tại vị trí của dữ liệu:

Sáu lần đun sôi ấm nước được biểu diễn bằng các chấm, số phút để đun sôi theo số lít nước, tăng từ 1.6 đến 4.5 phút, với một đường khớp màu cam đi qua các chấm từ 0.5 đến 1.7 lít

Vẽ các dự đoán của mô hình lên dữ liệu là cách nhanh nhất để kiểm tra xem mô hình có học được điều gì hợp lý hay không. Đường thẳng không đi qua các điểm dữ liệu cho thấy mô hình chưa khớp tốt.

challenge icon

Thử thách

Trung bình

Người quản lý tòa nhà đã đo thời gian của 12 chuyến đi thang máy: số tầng đã đi qua, floors, và thời gian tính bằng giây, seconds. Phần code ban đầu thiết lập biểu đồ có tiêu đề và nhãn.

  1. Khớp đường thẳng dự đoán seconds từ floors.
  2. Vẽ các chuyến đi dưới dạng biểu đồ phân tán có nhãn Rides, và đường thẳng có nhãn Fit, từ số tầng ít nhất đến nhiều nhất.
  3. Thêm chú giải và hiển thị biểu đồ.

Đoạn code không in ra gì; Coddy mô tả biểu đồ của bạn. Biểu đồ của một tòa nhà khác trông như sau:

Biểu đồ có tiêu đề Elevator Rides: tám chấm tăng từ 14 giây ở 2 tầng lên 51 giây ở 20 tầng, một đường thẳng khớp từ số tầng của chấm đầu tiên đến chấm cuối cùng, cùng chú giải có tên Rides và Fit

Tự làm thử

import numpy as np
import matplotlib.pyplot as plt

floors = np.array([3, 7, 1, 12, 5, 9, 15, 2, 10, 6, 13, 8])
seconds = np.array([15.3, 27.0, 12.4, 36.0, 19.5, 28.8, 44.9, 12.7, 33.2, 19.4, 41.7, 27.0])
# Đừng thay đổi các dòng bên dưới
fig, ax = plt.subplots()
ax.set_title("Elevator Rides")
ax.set_xlabel("Floors")
ax.set_ylabel("Seconds")

# 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