ai-362Đọc toàn bộ đề miễn phí

Chọn k cho KNN bằng cross-validation

Chọn hyperparameter k bằng validation thay vì nhìn accuracy trên train.

AITrung bình32 phút

Tiến độ của tôi ở bài này

Điểm được lưu vào tài khoản sau khi chấm bài.

Đang tải điểm của bạn…

Kiến thức và chủ đề

scikit-learnknncross-validationhyperparameter

Kiến thức tiên quyết: KNN k=1/k=3, stratified split, accuracy.

Nội dung đề bài

Mục tiêu kiến thức

Chọn hyperparameter k bằng validation thay vì nhìn accuracy trên train.

Mô tả bài toán

Đây là bài số 362 trong tầng Phân loại và học không giám sát. Bài dùng thư viện StratifiedKFold + cross_val_score + KNeighborsClassifier trên dữ liệu nhỏ, cố định và chạy CPU; mục tiêu là hiểu workflow chứ không bắt học viên tự viết lại thư viện.

Yêu cầu

Dùng StratifiedKFold có seed, tính accuracy cho từng k ứng viên và chọn điểm cao nhất; hòa thì chọn k nhỏ hơn.

def choose_knn_k(X, y, candidates, folds, seed):

Input

X/y classification, list candidates, số fold và seed.

Output

Dictionary results theo thứ tự candidates và best_k.

Ràng buộc

Không fit/evaluate trên cùng train trong mỗi fold; giữ stratify.

Ví dụ

Giải thích

k=1,3,5 được chấm trên các fold giữ tỷ lệ lớp, rồi chọn mean accuracy cao nhất.

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.

Góp ý & báo lỗi bài tập

Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.