始める無料で始める

すべてを組み合わせる

不整脈検出スタートアップで使っているパイプラインについて、次の2点が気になっています。

  • 学習は全年代の患者で行いましたが、実際の利用者は若いフィットネスユーザーが中心です。これはドメインシフトの可能性があるため、50歳超の例をすべて除外したいと考えています。
  • まだ過学習が心配なので、ランダムフォレスト分類器の複雑さを下げ、特徴量選択を行うことで改善できるか確認したいです。

この演習では、特徴量選択の SelectKBest() ステップと RandomForestClassifier を含むパイプラインを作成します。これらはすでにインポート済みです。さらに GridSearchCV(), Pipeline, numpynppickle が使用できます。データは arrh として与えられています。

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

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

コースを見る

演習の手順

  • ステップ名を ft とする SelectKBest()、ステップ名を clf とする RandomForestClassifier() を用いてパイプラインを作成します。
  • SelectKBest()kRandomForestClassifier()max_depth をチューニングするためのパラメータグリッドを作成します。
  • 50歳未満のみを含むデータに対して、そのグリッドでパイプラインを最適化するために GridSearchCV() を使用します。
  • 本番用に、最適化したパイプラインを pickle に保存します。

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

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

# Create a pipeline 
pipe = Pipeline([
  ('ft', ____), ('clf', ____(random_state=2))])

# Create a parameter grid
grid = {'ft__k':[5, 10], '____':[10, 20]}

# Execute grid search CV on a dataset containing under 50s
grid_search = ____(pipe, param_grid=grid)
arrh = arrh.____[____(arrh['age'] < 50)]
____.____(arrh.drop('class', 1), arrh['class'])

# Push the fitted pipeline to production
with ____('pipe.pkl', ____) as file:
    pickle.dump(____, file)
コードを編集して実行