始める無料で始める

すべてをつなげよう

不整脈検出のスタートアップに参加し、不整脈データセット arrh でモデルを学習させたいとします。ランダムフォレストは Kaggle のコンペでよく上位に入ることに気づいたので、グリッドサーチで最大深さを 2、5、10 に変えて試してみましょう。データセットの次元がかなり高いこともわかっているので、特徴量選択の効果も検討したいと考えています。

誤って過学習しないよう、すでにデータは分割済みです。グリッドサーチには X_trainy_train を使い、特徴量選択が有効かどうかの判断には X_testy_test を使います。4 つのデータ分割はすべて環境に読み込まれています。GridSearchCV()train_test_split()SelectKBest()chi2()、そして RandomForestClassifierrfc として利用可能)も使えます。

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

Python で設計する Machine Learning ワークフロー

コースを見る

演習の手順

  • RandomForestClassifier の最大深さを 2、5、10 に設定してグリッドサーチを行い、最も性能の高いパラメータ設定を保存してください。
  • 次に、上で得られた最良の推定器を用いて、推定器を再学習(refit)してください。
  • chi2 を評価関数にした SelectKBest を適用し、変換後の特徴量で分類器を再学習してください。

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

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

# Find the best value for max_depth among values 2, 5 and 10
grid_search = GridSearchCV(
  ____(random_state=1), param_grid=____)
best_value = grid_search.____(
  ____, ____).best_params_['max_depth']

# Using the best value from above, fit a random forest
clf = rfc(
  random_state=1, ____=best_value).____(X_train, y_train)

# Apply SelectKBest with chi2 and pick top 100 features
vt = SelectKBest(____, k=____).____(X_train, y_train)

# Create a new dataset only containing the selected features
X_train_reduced = ____.transform(____)
コードを編集して実行