理解 grid search 的輸出

Python 超參數調校

Alex Scriven

Data Scientist

解析輸出

來分析 GridSearchCV 的輸出。

GridSearchCV 的屬性可分成三組:

  • 結果記錄
    • cv_results_
  • 最佳結果
    • best_index_best_params_best_score_
  • 「其他資訊」
    • scorer_n_splits_refit_time_
Python 超參數調校

存取物件屬性

 

使用點記號來存取屬性。

例如:

grid_search_object.property

其中 property 是你要讀取的實際屬性。

Python 超參數調校

.cv_results_ 屬性

cv_results_ 屬性:

讀入 DataFrame 後便於列印與分析:

cv_results_df = pd.DataFrame(grid_rf_class.cv_results_)

print(cv_results_df.shape)

(12, 23)

  • 12 列對應網格中的 12 個組合,或我們跑的 12 個模型。
Python 超參數調校

.cv_results_ 的「time」欄位

time 欄位代表模型擬合(與評分)所花的時間。

記得我們做了 5 折交叉驗證嗎?它會執行 5 次,並儲存以秒為單位的平均與標準差。

time columns

Python 超參數調校

.cv_results_ 的「param_」欄位

 

param_ 欄位存放該列所測試的參數,每個參數一欄。

param columns

Python 超參數調校

.cv_results_ 的「param」欄位

params 欄位包含所有參數的字典:

pd.set_option("display.max_colwidth", -1)
print(cv_results_df.loc[:, "params"])

params column

Python 超參數調校

.cv_results_ 的「test_score」欄位

 

test_score 欄位包含各折在測試集上的分數,以及一些摘要統計:

test score

Python 超參數調校

.cv_results_ 的「rank_test_score」欄位

 

排名欄會依 mean_test_score 由高到低排序:

rank test score

Python 超參數調校

擷取最佳列

 

可用 rank_test_score 欄從 cv_results_ 輕鬆選出最佳網格組合。

best_row = cv_results_df[cv_results_df["rank_test_score"] == 1]
print(best_row)

best row

Python 超參數調校

The .cv_results_ 'train_score' columns

test_score 欄位接著會對 training_scores 重複出現。

幾點重要提醒:

  • 需將 return_train_score 設為 True 才會包含訓練分數欄。

  • 訓練分數沒有排名欄,因為我們只在意測試集表現。

Python 超參數調校

最佳網格組合

 

最佳網格組合的資訊彙整在以下三個屬性:

  • best_params_,帶來最佳分數的參數字典。

  • best_score_,實際的最佳分數。

  • best_index_,在 cv_results_.rank_test_score 中對應最佳的那一列。

Python 超參數調校

best_estimator_ 屬性

 

best_estimator_ 屬性是用網格搜尋到的最佳參數訓練出的估計器。

在這裡是 Random Forest 估計器:

type(grid_rf_class.best_estimator_)

sklearn.ensemble.forest.RandomForestClassifier

你也可以直接把這個物件當作估計器使用。

Python 超參數調校

best_estimator_ 屬性

print(grid_rf_class.best_estimator_)

print out of best estimator code

Python 超參數調校

其他資訊

還有一些額外資訊在以下屬性:

  • scorer_

對保留資料所用的評分函式。(我們設為 AUC)

  • n_splits_

交叉驗證的分割數。(我們設為 5)

  • refit_time_

在整個資料集上重新擬合最佳模型所花的秒數。

Python 超參數調校

一起來練習吧!

Python 超參數調校

Preparing Video For Download...