Random Forestのパラメータを抽出する
これまでロジスティック回帰で行った作業を、今度はRandom Forestモデルに当てはめていきます。このモデルのパラメータの一つは、各決定木において各階層でどのように分割するかです。
Random Forestでは、すべての分割やすべての木を詳細に調べることは現実的ではないため、ロジスティック回帰の係数ほど直接的に有用ではありません。しかし、モデル内部で何が起きているかをのぞき見る練習としては非常に有益です。
この演習では、Random Forestモデルから単一の決定木を取り出し、可視化し、プログラムでその分割の一つを抽出します。
利用できるもの:
- Random Forestモデルオブジェクト
rf_clf - 選択した決定木の先頭部分の画像
tree_viz_image X_trainのDataFrameとoriginal_variablesのリスト
この演習はコースの一部です
Pythonでのハイパーパラメータチューニング
演習の手順
- Random Forestモデルから7本目の木(インデックス6)を抽出します。
- 分割の判断を確認するため、この木を可視化します(
tree_viz_image)。 - 先頭の分割で使われた特徴量としきい値を抽出します。
- 特徴量名としきい値をまとめて出力します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Extract the 7th (index 6) tree from the random forest
chosen_tree = rf_clf.estimators_[____]
# Visualize the graph using the provided image
imgplot = plt.imshow(____)
plt.show()
# Extract the parameters and level of the top (index 0) node
split_column = chosen_tree.tree_.feature[____]
split_column_name = X_train.columns[split_column]
split_value = chosen_tree.tree_.threshold[____]
# Print out the feature and level
print("This node split on feature {}, at a value of {}".format(split_column_name, ____))