Scikit Learn における RandomSearchCV
Scikit Learn を使って RandomizedSearchCV オブジェクトを作成する練習をしましょう。
ハイパーパラメータグリッドは、max_depth(5〜25 のすべての整数値)と max_features('auto' と 'sqrt')とします。
RandomizedSearchCV オブジェクトの設定は次のとおりです。
n_estimatorsが 80 の RandomForestClassifier を推定器に使用する。- 3 分割の交差検証(
cv) - モデルのスコアには
roc_aucを使用する - 並列処理に 4 コアを使用する(
n_jobs) - 最良モデルを再学習(refit)し、学習時のスコアも返す
- 効率のためにサンプルするモデルは 5 個に限定する(
n_iter)
X_train と y_train のデータセットは読み込まれています。
選ばれたハイパーパラメータを取り出すには、cv_results_ に各ハイパーパラメータごとの列があります。例えば、ハイパーパラメータ criterion の列は param_criterion になります。
この演習はコースの一部です
Pythonでのハイパーパラメータチューニング
演習の手順
- 上記の条件に従ってハイパーパラメータグリッドを作成します。
- 上記の条件に沿って
RandomizedSearchCVオブジェクトを作成します。 - その
RandomizedSearchCVオブジェクトを学習データに適合させます。 cv_results_を参照し、モデリング過程で選ばれた両方のハイパーパラメータ(max_depthとmax_features)の値を出力します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create the parameter grid
param_grid = {'max_depth': list(range(____,26)), 'max_features': [____ , ____]}
# Create a random search object
random_rf_class = RandomizedSearchCV(
estimator = ____(n_estimators=____),
param_distributions = ____, n_iter = ____,
scoring=____, n_jobs=____, cv = ____, refit=____, return_train_score = ____ )
# Fit to the training data
____.fit(X_train, y_train)
# Print the values used for both hyperparameters
print(random_rf_class.cv_results_[____])
print(random_rf_class.cv_results_[____])