Menu
CoddyTech

Dự đoán các con số

Thuộc phần Học có giám sát trong hành trình Machine Learning của Coddy. Bài học 11 trên 58.

Các mô hình trong chương này dự đoán các con số. Đến cuối chương, biểu đồ về những lần mô hình dự đoán sai sẽ cho thấy mô hình đã bỏ sót điều gì:

Biểu đồ các lần mô hình dự đoán sai theo nhiệt độ: các điểm tạo thành hình vòng cung từ -280 lên +140 rồi đi xuống, xoay quanh đường đứt nét ở mức 0, với nhãn: mô hình đã bỏ sót một đường cong

Bắt đầu với một đường thẳng mà bạn đã biết. LinearRegression học đường thẳng đó từ bảng X, mỗi hàng tương ứng với một mẫu và mỗi cột tương ứng với một đặc trưng:

from sklearn.linear_model import LinearRegression

area = np.array([60, 75, 90, 110, 130, 150])  # nhà, tính bằng m²
price = np.array([215, 248, 290, 335, 385, 428])  # nghìn đô la
X = area.reshape(-1, 1)  # 6 hàng, 1 cột
model = LinearRegression()
model.fit(X, price)
print(np.round(model.coef_, 2), np.round(model.intercept_, 2))
print(np.round(np.polyfit(area, price, 1), 2))

Lệnh này in ra cùng một dòng hai lần:

[2.39] 71.59
[ 2.39 71.59]

Sáu ngôi nhà được biểu thị bằng các dấu chấm, giá so với diện tích, với đường LinearRegression màu cam đậm và đường np.polyfit màu đen nét đứt nằm chính xác chồng lên nhau: giá = 2.39 * diện tích + 71.59

coef_ lưu một hệ số góc cho mỗi đặc trưng: mỗi m² tăng thêm làm giá tăng 2.39 nghìn đô la. intercept_ là điểm bắt đầu của đường thẳng, tại 0 m². Sau đó, model.predict([[100]]) định giá 100 m² ở mức khoảng 310.85 nghìn.

challenge icon

Thử thách

Trung bình

Một cửa hàng in không công bố giá, nhưng bạn có dữ liệu từ 10 đơn hàng trước: số trang pages và giá price tính bằng đô la. Chương trình đọc số trang của đơn hàng mới.

  1. Khớp mô hình LinearRegression với số trang, dưới dạng bảng một cột.
  2. In giá mỗi trang (3 chữ số thập phân) và phí thiết lập, tức hệ số chặn (2 chữ số thập phân).
  3. In giá dự đoán cho đơn hàng mới (2 chữ số thập phân).

Với một cửa hàng khác và 120:

Per page: 0.095 dollars
Setup fee: 4.1 dollars
120 pages: 15.5 dollars

Tự làm thử

import numpy as np
from sklearn.linear_model import LinearRegression

# 10 lần in trước: số trang đã in và số tiền đã trả, tính bằng đô la
pages = np.array([40, 75, 120, 160, 210, 260, 300, 380, 450, 520])
price = np.array([7.38, 12.6, 17.65, 20.69, 26.63, 32.18, 37.76, 46.4, 55.17, 60.89])
new_pages = int(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 có giám sát

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