Đường cong học tập
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 33 trên 58.
Nhiều dữ liệu hơn có giúp mô hình của bạn tốt hơn không? Đường cong học tập (learning curve) cho bạn thấy điều đó: độ chính xác trên tập kiểm tra khi tập huấn luyện tăng lên. Ở đây là cây sâu trên dữ liệu hai mặt trăng:
Cây ghi nhớ mọi tập dữ liệu huấn luyện, nhưng mỗi hàng bổ sung đều dạy cho nó điều gì đó có ích. Các mô hình linh hoạt được lợi nhiều nhất từ dữ liệu.
Huấn luyện trên n hàng đầu tiên trong tập huấn luyện, sau đó chấm điểm trên cùng các hàng kiểm tra mỗi lần:
sizes = [25, 50, 100, 200, 400, 800]
test_scores = []
for n in sizes:
tree = DecisionTreeClassifier(random_state=0)
tree.fit(X_train[:n], y_train[:n])
test_scores.append(tree.score(X_test, y_test))
ax.plot(sizes, test_scores, marker="o")Vẫn đang tăng ở cạnh phải à? Thêm dữ liệu sẽ giúp ích.
Thử thách
Trung bìnhCó thêm bản ghi âm sẽ giúp phân biệt hai loài cú không? Phần code khởi đầu chia 600 tiếng cú kêu và chuẩn bị sẵn hai mô hình cùng biểu đồ.
- Với mỗi
ntrongsizes, huấn luyện cả hai mô hình trênnhàng huấn luyện đầu tiên, rồi lưu độ chính xác trên tập kiểm tra của chúng. - In mức cải thiện của mỗi mô hình, lấy điểm số cuối trừ điểm số đầu, với 3 chữ số thập phân.
- Vẽ cả hai đường theo
sizes, dùngmarker="o", gắn nhãnlogisticvàtree, rồi thêm chú giải.
Cú ở khu rừng khác cho kết quả:
Logistic gains 0.053 from more data
Tree gains 0.160 from more datavà vẽ biểu đồ này. Sau đó, Coddy sẽ mô tả biểu đồ của bạn.
Tự làm thử
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
# Đừng thay đổi các dòng bên dưới: 600 tiếng kêu của cú, cao độ (Hz) và thời lượng (s)
rng = np.random.default_rng(23)
pitch = np.round(rng.uniform(300, 900, 600))
length = np.round(rng.uniform(0.2, 2.0, 600), 2)
# Loài 1, cú mèo nâu, có tiếng kêu dài hơn so với cao độ; một vài ghi chép thực địa bị sai
longer = length > 0.5 + 6.4 * ((pitch - 600) / 600) ** 2
wrong_note = rng.random(600) < 0.05
species = np.where(longer != wrong_note, 1, 0)
X = np.column_stack([pitch, length])
X_train, X_test, y_train, y_test = train_test_split(X, species, test_size=0.25, random_state=0)
sizes = [25, 50, 100, 200, 400]
logistic = LogisticRegression(max_iter=1000)
tree = DecisionTreeClassifier(random_state=0)
fig, ax = plt.subplots()
ax.set_title("Owl Calls: Learning Curves")
ax.set_xlabel("Training rows")
ax.set_ylabel("Test accuracy")
# Viết code của bạn bên dưới
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
1Mô hình đầu tiên của bạn
Học từ ví dụTập huấn luyện và tập kiểm traHuấn luyện và dự đoánChấm điểm mô hìnhÔn tập: Bộ sắp xếp hạt giống2Láng giềng gần nhất
Cách k-NN đưa ra quyết địnhChọn kRanh giới quyết địnhChuẩn hóa dữ liệu cho láng giềngÔn tập: láng giềng với dữ liệu rượu vang5Đánh giá bộ phân loại
Ma trận nhầm lẫnĐộ chính xác và độ thu hồiĐiểm F1Các lớp mất cân bằngĐường cong ROCÔn tập: Bài kiểm tra sàng lọc11Dự án: Các loài chim cánh cụt
Làm quen với chim cánh cụtChuẩn bị dữ liệuChọn mô hìnhTinh chỉnh mô hình tốt nhấtĐưa mô hình vào sử dụng3Hồi quy tuyến tính
Dự đoán các con sốNhiều đặc trưngĐo lường sai sốBiểu đồ phần dưÔn tập: Thuê xe đạp6Cây quyết định
Cây đặt câu hỏiĐọc câyĐộ sâu của câyTầm quan trọng của đặc trưngÔn tập: quyết định cho vay9Các mô hình tổ hợp
Rừng ngẫu nhiênVì sao rừng hoạt động hiệu quảTăng cường độ dốcÔn tập: Người kiểm lâm rừng12Thử thách cuối cùng
Tiến triển của bệnh tiểu đườngPhê duyệt tín dụngChữ số viết tayKhách hàng rời bỏTự luyện tập: Trình biên dịch Python online