Tinh chỉnh siêu tham số trong Python
Alex Scriven
Data Scientist
Hãy phân tích đầu ra GridSearchCV.
Ba nhóm thuộc tính của GridSearchCV:
cv_results_best_index_, best_params_ & best_score_scorer_, n_splits_ & refit_time_
Truy cập thuộc tính bằng dấu chấm.
Ví dụ:
grid_search_object.property
Trong đó property là thuộc tính cần lấy.
Thuộc tính cv_results_:
Đọc vào DataFrame để in và phân tích:
cv_results_df = pd.DataFrame(grid_rf_class.cv_results_)
print(cv_results_df.shape)
(12, 23)
Các cột time là thời gian fit (và chấm điểm) mô hình.
Nhớ rằng ta dùng 5-fold cross-validation. Quá trình chạy 5 lần và lưu trung bình, độ lệch chuẩn thời gian (giây).

Các cột param_ lưu tham số đã thử ở hàng đó, mỗi tham số một cột

Cột params chứa từ điển tất cả tham số:
pd.set_option("display.max_colwidth", -1)
print(cv_results_df.loc[:, "params"])

Các cột test_score chứa điểm trên tập test cho từng fold chéo và một số thống kê tóm tắt:

Cột xếp hạng, sắp mean_test_score từ tốt nhất đến kém nhất:

Có thể chọn ô lưới tốt nhất từ cv_results_ bằng cột rank_test_score
best_row = cv_results_df[cv_results_df["rank_test_score"] == 1]
print(best_row)

Các cột test_score được lặp lại cho training_scores.
Một số lưu ý quan trọng:
Phải đặt return_train_score là True để có cột điểm huấn luyện.
Không có cột xếp hạng cho điểm huấn luyện, vì ta chỉ quan tâm hiệu suất trên tập test.
Thông tin về ô lưới tốt nhất được tóm tắt trong ba thuộc tính:
best_params_: từ điển tham số cho điểm tốt nhất.
best_score_: điểm tốt nhất.
best_index_: hàng trong cv_results_.rank_test_score là tốt nhất.
Thuộc tính best_estimator_ là một estimator dựng bằng tham số tốt nhất từ grid search.
Ở đây là Random Forest estimator:
type(grid_rf_class.best_estimator_)
sklearn.ensemble.forest.RandomForestClassifier
Ta cũng có thể dùng trực tiếp đối tượng này làm estimator.
print(grid_rf_class.best_estimator_)

Một số thông tin bổ sung có ở các thuộc tính:
scorer_Hàm chấm điểm dùng trên dữ liệu giữ lại (ta đặt là AUC)
n_splits_Số lần chia cross-validation (ta đặt là 5)
refit_time_Số giây để refit mô hình tốt nhất trên toàn bộ dữ liệu.
Tinh chỉnh siêu tham số trong Python