Thiết lập tham số cho GridSearch
Một hyperparameter là một tham số bên trong hàm. Ví dụ, max_depth hoặc min_samples_leaf là các hyperparameter của hàm DecisionTreeClassifier(). Điều chỉnh hyperparameter (hyperparameter tuning) là quá trình thử các giá trị khác nhau của hyperparameter để tìm ra giá trị tối ưu: giá trị cho dự đoán tốt nhất theo mục tiêu của bạn. Trong sklearn, bạn có thể dùng GridSearch để thử các tổ hợp hyperparameter khác nhau. Thậm chí tốt hơn, bạn có thể dùng GridSearchCV() để vừa thử các tổ hợp vừa chạy cross-validation trong cùng một hàm!
Trong bài tập này, bạn sẽ chuẩn bị các giá trị khác nhau muốn thử cho max_depth và min_samples_leaf. Sau đó, bạn sẽ đưa chúng vào một từ điển, vì đó là định dạng mà GridSearchCV() yêu cầu:
- khóa của từ điển sẽ là tên các hyperparameter
- giá trị của từ điển sẽ là các thuộc tính (các giá trị hyperparameter) bạn muốn thử
Thay vì viết tay tất cả giá trị, bạn sẽ dùng hàm range(), hàm này cho phép tạo dãy giá trị tăng dần. Ví dụ, range(1, 10, 2) sẽ tạo một danh sách chứa các giá trị từ 1 (bao gồm) đến 10 (không bao gồm), với bước nhảy 2. Kết quả cuối cùng sẽ là [1, 3, 5, 7, 9].
Bài tập này là một phần của khóa học
Phân tích Nhân sự (HR Analytics): Dự đoán nghỉ việc bằng Python
Hướng dẫn bài tập
- Theo định dạng ví dụ ở trên, tạo các giá trị cho độ sâu tối đa từ 5 đến 20 với bước tăng 1
- Làm tương tự cho kích thước mẫu tối thiểu với các giá trị từ 50 đến 450 với bước tăng 50
- Tạo từ điển bằng cách chỉ định các giá trị
max_depthvàmin_samples_leafcần thử, sử dụng đúng các biến bạn vừa tạo
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Generate values for maximum depth
depth = [i for i in ____(5,21,1)]
# Generate values for minimum sample size
samples = [i for i in range(____,500,____)]
# Create the dictionary with parameters to be checked
parameters = dict(max_depth=depth, min_samples_leaf=____)