Menu
CoddyTech

Dự đoán có hoặc không

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 16 trên 58.

Chương này trả lời các câu hỏi có hoặc không bằng xác suất. Chương kết thúc với một bộ lọc thư rác do bạn xây dựng, xếp hạng email như sau:

Tám email được biểu thị bằng các thanh cho biết xác suất là thư rác, từ 0.02 đối với Mom đến 0.97 đối với WIN NOW. Các thanh nằm trên đường gạch đứt ở mức 0.5 có màu đỏ: thư rác

Đặt chỗ nhà hàng có bị hủy không? LogisticRegression học điều đó từ 60 lượt đặt chỗ trước đây: số ngày đặt trước và trạng thái đã hủy (1) hoặc vẫn giữ chỗ (0):

Sáu mươi lượt đặt chỗ được thể hiện bằng các chấm tại 0 (vẫn giữ chỗ) và 1 (đã hủy) theo số ngày đặt trước, cùng đường cong chữ S màu cam tăng từ 0.07 lên 0.93. Đường cong có giá trị 0.09 tại mốc 3 ngày và 0.72 tại mốc 40 ngày

from sklearn.linear_model import LogisticRegression

model = LogisticRegression(max_iter=1000)  # Đủ số lần lặp để hoàn tất quá trình học
model.fit(X, cancelled)  # X: số ngày tính trước, một cột
print(np.round(model.predict_proba([[3], [40]]), 2))

Kết quả in ra:

[[0.91 0.09]
 [0.28 0.72]]

Mỗi hàng của lượt đặt chỗ chứa xác suất thuộc lớp 0, rồi đến lớp 1. [:, 1] giữ lại xác suất thuộc lớp 1, tức là bị hủy.

Chúng đi theo hình chữ S: không bao giờ nhỏ hơn 0 hoặc lớn hơn 1, đúng như xác suất cần có.

challenge icon

Thử thách

Trung bình

Một câu lạc bộ thả diều đặt ba khung giờ thả diều vào ngày mai. kites.csv lưu 90 lần thả diều trước đây: wind_kmh và flew, có giá trị 1 nếu diều bay lên được. Chương trình đọc dự báo gió cho từng khung giờ vào slots.

  1. Khớp mô hình LogisticRegression (max_iter=1000) với dữ liệu gió.
  2. In xác suất diều bay được trong mỗi khung giờ, làm tròn đến phần trăm nguyên.
  3. In số lần diều dự kiến bay được: tổng các xác suất (1 chữ số thập phân).

Dành cho một câu lạc bộ khác:

6 km/h: 9% chance the kite flies
18 km/h: 64% chance the kite flies
30 km/h: 97% chance the kite flies
Expected flights: 1.7 of 3

Tự làm thử

import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression

# 90 lần thả diều trước đây: tốc độ gió tính bằng km/h và flew (1 nếu diều bay lên)
kites = pd.read_csv("kites.csv")
# Ba khung giờ thả diều ngày mai, theo tốc độ gió dự báo
winds = []
for i in range(3):
    winds.append(int(input()))
slots = pd.DataFrame({"wind_kmh": winds})

# Viết code 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