Hiểu đầu ra grid search

Tinh chỉnh siêu tham số trong Python

Alex Scriven

Data Scientist

Phân tích đầu ra

Hãy phân tích đầu ra GridSearchCV.

Ba nhóm thuộc tính của GridSearchCV:

  • Nhật ký kết quả
    • cv_results_
  • Kết quả tốt nhất
    • best_index_, best_params_ & best_score_
  • 'Thông tin bổ sung'
    • scorer_, n_splits_ & refit_time_
Tinh chỉnh siêu tham số trong Python

Truy cập thuộc tính đối tượng

 

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.

Tinh chỉnh siêu tham số trong Python

Thuộc tính .cv_results_

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)

  • 12 hàng cho 12 ô trong lưới hay 12 mô hình đã chạy
Tinh chỉnh siêu tham số trong Python

Các cột 'time' trong .cv_results_

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ột thời gian

Tinh chỉnh siêu tham số trong Python

Các cột 'param_' trong .cv_results_

 

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

cột tham số

Tinh chỉnh siêu tham số trong Python

Cột 'param' trong .cv_results_

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ột params

Tinh chỉnh siêu tham số trong Python

Các cột 'test_score' trong .cv_results_

 

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:

điểm test

Tinh chỉnh siêu tham số trong Python

Cột 'rank_test_score' trong .cv_results_

 

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

xếp hạng điểm test

Tinh chỉnh siêu tham số trong Python

Trích xuất hàng tốt 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)

hàng tốt nhất

Tinh chỉnh siêu tham số trong Python

Các cột 'train_score' trong .cv_results_

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_scoreTrue để 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.

Tinh chỉnh siêu tham số trong Python

Ô lưới tốt nhất

 

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.

Tinh chỉnh siêu tham số trong Python

Thuộc tính best_estimator_

 

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.

Tinh chỉnh siêu tham số trong Python

Thuộc tính best_estimator_

print(grid_rf_class.best_estimator_)

in best estimator

Tinh chỉnh siêu tham số trong Python

Thông tin bổ sung

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

Ayo berlatih!

Tinh chỉnh siêu tham số trong Python

Preparing Video For Download...