始める無料で始める

最適な木の深さを見つける

ここでは、決定木の max_depth パラメータをチューニングして、過学習を抑えつつ適切なモデル性能を保てる値を見つけます。複数の max_depth 候補に対して for ループを回し、各候補で決定木を学習させたあと、評価指標を計算します。

パラメータ候補を格納した depth_list はあらかじめ読み込まれています。2 列からなる depth_tuning 配列も用意されており、1 列目には深さの候補、2 列目には recall スコアを入れるプレースホルダーが設定されています。特徴量と目的変数は、学習データが train_Xtrain_Y、テストデータが test_Xtest_Y として読み込まれています。numpypandas はそれぞれ nppd としてインポート済みです。

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

Pythonで学ぶマーケティングのための機械学習

コースを見る

演習の手順

  • リスト depth_list の長さまで、0 からの範囲で for ループを回します。
  • 各深さの候補について、決定木分類器を初期化して学習し、テストデータで churn を予測します。
  • 各深さの候補について、recall_score() 関数で recall スコアを計算し、depth_tunning の 2 列目に保存します。
  • depth_tuning から、適切な列名を付けて pandas の DataFrame を作成します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Run a for loop over the range of depth list length
for index in ___(0, len(depth_list)):
  # Initialize and fit decision tree with the `max_depth` candidate
  mytree = DecisionTreeClassifier(___=depth_list[index])
  mytree.fit(___, train_Y)
  # Predict churn on the testing data
  pred_test_Y = mytree.predict(___)
  # Calculate the recall score 
  depth_tuning[index,1] = ___(test_Y, ___)

# Name the columns and print the array as pandas DataFrame
col_names = ['Max_Depth','Recall']
print(pd.DataFrame(depth_tuning, columns=___))
コードを編集して実行