Tinh chỉnh siêu tham số với RandomizedSearchCV
Như bạn đã thấy, GridSearchCV có thể tốn nhiều chi phí tính toán, đặc biệt khi bạn tìm kiếm trên không gian siêu tham số lớn. Trong trường hợp này, bạn có thể dùng RandomizedSearchCV, phương pháp sẽ thử một số lượng cố định các cấu hình siêu tham số được lấy mẫu từ các phân phối xác suất xác định trước.
Các tập huấn luyện và kiểm tra từ diabetes_df đã được nạp sẵn cho bạn dưới dạng X_train, X_test, y_train, và y_test, trong đó biến mục tiêu là "diabetes". Một mô hình logistic regression đã được tạo và lưu dưới tên logreg, cùng với một biến KFold lưu trong kf.
Bạn sẽ định nghĩa một dải siêu tham số và dùng RandomizedSearchCV (đã được import từ sklearn.model_selection) để tìm các siêu tham số tối ưu từ những lựa chọn này.
Bài tập này là một phần của khóa học
Học có giám sát với scikit-learn
Hướng dẫn bài tập
- Tạo
params, thêm"l1"và"l2"làm giá trịpenalty, đặtCthành một dải gồm50giá trị float từ0.1đến1.0, vàclass_weightlà"balanced"hoặc một dictionary chứa0:0.8, 1:0.2. - Tạo đối tượng Randomized Search CV, truyền mô hình và bộ tham số, và đặt
cvbằngkf. - Fit
logreg_cvvới dữ liệu huấn luyện. - In ra các siêu tham số tốt nhất của mô hình và điểm chính xác (accuracy).
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.
# Create the parameter space
params = {"penalty": ["____", "____"],
"tol": np.linspace(0.0001, 1.0, 50),
"C": np.linspace(____, ____, ____),
"class_weight": ["____", {0:____, 1:____}]}
# Instantiate the RandomizedSearchCV object
logreg_cv = ____(____, ____, cv=____)
# Fit the data to the model
logreg_cv.____(____, ____)
# Print the tuned parameters and score
print("Tuned Logistic Regression Parameters: {}".format(____.____))
print("Tuned Logistic Regression Best Accuracy Score: {}".format(____.____))