最適な木の深さを見つける
ここでは、決定木の max_depth パラメータをチューニングして、過学習を抑えつつ適切なモデル性能を保てる値を見つけます。複数の max_depth 候補に対して for ループを回し、各候補で決定木を学習させたあと、評価指標を計算します。
パラメータ候補を格納した depth_list はあらかじめ読み込まれています。2 列からなる depth_tuning 配列も用意されており、1 列目には深さの候補、2 列目には recall スコアを入れるプレースホルダーが設定されています。特徴量と目的変数は、学習データが train_X、train_Y、テストデータが test_X、test_Y として読み込まれています。numpy と pandas はそれぞれ np、pd としてインポート済みです。
この演習はコースの一部です
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=___))