始める無料で始める

パイプラインでのカスタム関数トランスフォーマー

これまでのやり取りで、センサーは肥満の方に対して性能が悪いかもしれないと聞いていました。以前は重み付けで対応しましたが、この情報は特徴量エンジニアリングにも使えると考え、個々人の記録された体重を「肥満かどうか」の指標に置き換えることにしました。これをパイプラインで実装します。numpynp として利用でき、RandomForestClassifier()FunctionTransformer()GridSearchCV() も使用できます。

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

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

コースを見る

演習の手順

  • カスタムの特徴抽出器を定義します。これは入力の変更済みコピーを出力する関数です。
  • 1 列目の各値を、その列の平均値に定数を掛けたしきい値を超えているかどうかの指標に置き換えます。
  • 上で作成した特徴抽出器をトランスフォーマーに変換し、ランダムフォレスト分類器と一緒にパイプラインに入れます。
  • グリッドサーチ CV を使って、特徴抽出器の乗数 multiplier に 1、2、3 を試してください。

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

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

# Define a feature extractor to flag very large values
def more_than_average(X, multiplier=1.0):
  Z = ____
  Z[:,1] = ____ > multiplier*np.mean(Z[:,1])
  return Z

# Convert your function so that it can be used in a pipeline
pipe = Pipeline([
  ('ft', ____(____)),
  ('clf', RandomForestClassifier(random_state=2))])

# Optimize the parameter multiplier using GridSearchCV
params = ____
grid_search = GridSearchCV(pipe, param_grid=params)
コードを編集して実行