Menu
CoddyTech

Khớp bình phương tối thiểu

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

Việc đoán các đường thẳng có thể kéo dài mãi. np.polyfit(x, y, 1) tìm ra đường thẳng phù hợp nhất ngay lập tức: đường thẳng có tổng bình phương phần dư nhỏ nhất. Đây là độ sâu tuyết trong một trận bão:

hours = np.array([1, 2, 3, 5, 6])
depth = np.array([14, 22, 35, 52, 61])
slope, intercept = np.polyfit(hours, depth, 1)
print(np.round(slope, 2), np.round(intercept, 2))

Lệnh này in ra 9.5 4.5: tuyết dày thêm khoảng 9.5 cm mỗi giờ, và dày 4.5 cm vào giờ 0. Không có đường nào khác có sai số nhỏ hơn:

Độ dày tuyết theo số giờ được biểu diễn bằng năm chấm, cùng ba đường: hai đường nét đứt phỏng đoán có tổng bình phương phần dư lần lượt là 159 và 18, và đường polyfit nét đậm có tổng là 6.5

1 yêu cầu một đường thẳng, và x đứng trước. Đây là hồi quy tuyến tính (linear regression), mô hình đầu tiên bạn huấn luyện trong phần 3.

challenge icon

Thử thách

Trung bình

Một nhà sản xuất drone muốn biết phép đo nào dự đoán thời gian bay chính xác nhất. drones.csv chứa dữ liệu của 15 chuyến bay: payload_g, wind_kmh và flight_min. Phần code khởi đầu tải dữ liệu và định nghĩa ssr(x, y, slope, intercept).

  1. Với mỗi cột trong columns, hãy khớp một đường thẳng dùng cột đó để dự đoán flight_min.
  2. In phương trình và SSR như bên dưới: hệ số góc có 3 chữ số thập phân, hệ số chặn và SSR có 2 chữ số thập phân.
  3. In tên cột có SSR nhỏ hơn.

Đối với một drone khác:

payload_g: flight_min = -0.001 * payload_g + 21.55, SSR 164.94
wind_kmh: flight_min = -0.481 * wind_kmh + 28.13, SSR 9.1
Better predictor: wind_kmh

Tự làm thử

import numpy as np
import pandas as pd


# Trả về tổng bình phương phần dư của đường thẳng slope * x + intercept (bài học 35)
def ssr(x, y, slope, intercept):
    return ((y - (slope * x + intercept)) ** 2).sum()


drones = pd.read_csv("drones.csv")
columns = ["payload_g", "wind_kmh"]

# 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