Chọn k
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 7 trên 58.
k nào phù hợp với ớt? Hãy thử vài giá trị rồi chấm điểm mỗi mô hình hai lần: trên các hàng mô hình đã học, tức độ chính xác huấn luyện, và trên các hàng chưa được xem, tức độ chính xác kiểm tra.
Ở k = 1, mỗi quả ớt là hàng xóm gần nhất của chính nó, nên mô hình ghi nhớ dữ liệu: dự đoán hoàn hảo trên các hàng dữ liệu đó, nhưng kém hơn với dữ liệu mới. Giá trị k quá lớn làm mờ ranh giới giữa các nhóm.
ks = range(1, 120, 6)
train_acc = []
test_acc = []
for k in ks:
model = KNeighborsClassifier(n_neighbors=k)
model.fit(X_train, y_train)
train_acc.append(model.score(X_train, y_train))
test_acc.append(model.score(X_test, y_test))Hiện tại, hãy chọn k tại đó độ chính xác trên tập kiểm tra đạt đỉnh: chương 7 sẽ giới thiệu một cách đánh giá công bằng hơn.
Thử thách
DễMột câu lạc bộ bóng đá ghi lại các cú sút trong shots.csv: khoảng cách, góc sút và goal hoặc miss. Giá trị k nào dự đoán tốt nhất? Phần code khởi đầu chia dữ liệu, liệt kê ks và gắn nhãn cho biểu đồ.
- Với mỗi giá trị k, hãy huấn luyện một mô hình và lưu độ chính xác trên tập huấn luyện và tập kiểm tra.
- In giá trị k tốt nhất theo độ chính xác trên tập kiểm tra như bên dưới.
- Vẽ cả hai danh sách theo
ks, gắn nhãntrainvàtest, đồng thời thêm chú giải.
Với một câu lạc bộ khác:
Best k: 9 (test accuracy 0.783)Sau đó, Coddy mô tả biểu đồ của bạn.
Tự làm thử
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
# Mỗi cú sút một hàng: khoảng cách đến khung thành (m), góc sút so với khung thành (độ), ghi bàn hoặc sút trượt
shots = pd.read_csv("shots.csv")
X = shots[["distance_m", "angle_deg"]]
y = shots["result"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
ks = range(1, 42, 4) # k = 1, 5, 9, ..., 41
fig, ax = plt.subplots()
ax.set_title("Shots: Accuracy by k")
ax.set_xlabel("k (neighbors)")
ax.set_ylabel("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