始める無料で始める

ランダムフォレストの特徴量の重要度

ツリーベースの手法の便利な点の一つは、特徴量の重要度(feature importances)を抽出できることです。これは、各特徴量が予測にどれだけ貢献しているかを定量的に測る方法です。重要度の高い特徴量に注目して改善やチューニングを行ったり、モデルを複雑にしている不要な特徴量を取り除いたりするのに役立ちます。

sklearn のツリーモデルには、モデルのフィッティング後にアクセスできる .feature_importances_ プロパティがあります。このプロパティには特徴量の重要度スコアが格納されています。重要度の高い順に並べた棒グラフをきれいに描画するには、np.argsort() を使って特徴量の重要度をソートしたインデックスを取得する必要があります。

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

Python による金融のための Machine Learning

コースを見る

演習の手順

  • ランダムフォレストモデル(rfr)の feature_importances_ プロパティを使って、特徴量の重要度を importances 変数に取り出しましょう。
  • numpy の argsort を使って、特徴量の重要度を大きい順に並べたインデックスを取得し、sorted_index 変数に保存しましょう。
  • labels 変数に x 軸のティックラベルとして特徴量名を設定しましょう。sorted_index リストでインデックスを付けられるよう、feature_names を numpy 配列に変換してから使用してください。

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

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

# Get feature importances from our random forest model
importances = rfr.____

# Get the index of importances from greatest importance to least
sorted_index = ____(importances)[::-1]
x = range(len(importances))

# Create tick labels 
labels = np.array(____)[____]
plt.bar(x, importances[sorted_index], tick_label=labels)

# Rotate tick labels to vertical
plt.xticks(rotation=90)
plt.show()
コードを編集して実行