始める無料で始める

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_trainy_train のデータセットは読み込まれています。

選ばれたハイパーパラメータを取り出すには、cv_results_ に各ハイパーパラメータごとの列があります。例えば、ハイパーパラメータ criterion の列は param_criterion になります。

この演習はコースの一部です

Pythonでのハイパーパラメータチューニング

コースを見る

演習の手順

  • 上記の条件に従ってハイパーパラメータグリッドを作成します。
  • 上記の条件に沿って RandomizedSearchCV オブジェクトを作成します。
  • その RandomizedSearchCV オブジェクトを学習データに適合させます。
  • cv_results_ を参照し、モデリング過程で選ばれた両方のハイパーパラメータ(max_depthmax_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_[____])
コードを編集して実行