フライト時間モデル・パイプラインのクロスバリデーション
先ほど作成したクロスバリデーション付きモデルは、km のみを使って duration を予測するシンプルなものでした。
フライト時間のもう一つの重要な予測変数は出発空港です。混雑した空港では離陸までに時間がかかる傾向があります。予測変数を追加するとモデルが良くなるか見てみましょう!
この演習では、モデルに org フィールドを追加します。ただし、org はカテゴリ変数なので、そのままでは使えません。まずインデックス化し、その後ワンホットエンコードして、km と一緒にアセンブルしてから回帰モデルを構築します。これらの処理はパイプラインでまとめます。
次のオブジェクトはすでに用意されています:
params— 空のパラメーターグリッドevaluator— 回帰用の評価器regression—labelCol='duration'を指定したLinearRegressionオブジェクト
StringIndexer、OneHotEncoder、VectorAssembler、CrossValidator クラスはすでにインポートされています。
この演習はコースの一部です
Machine Learning with PySpark
演習の手順
- 文字列インデクサを作成します。入力と出力のフィールドをそれぞれ
org、org_idxに指定します。 - ワンホットエンコーダを作成します。出力フィールド名は
org_dummyにします。 kmとorg_dummyを 1 つのフィールドfeaturesにアセンブルします。- 次の処理を順に行うパイプラインを作成し、これを使ってクロスバリデータを作成します:文字列インデクサ、ワンホットエンコーダ、アセンブラ、線形回帰。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create an indexer for the org field
indexer = ____(____, ____)
# Create an one-hot encoder for the indexed org field
onehot = ____(____, ____)
# Assemble the km and one-hot encoded fields
assembler = ____(____, ____)
# Create a pipeline and cross-validator.
pipeline = ____(stages=[____, ____, ____, ____])
cv = ____(estimator=____,
estimatorParamMaps=____,
evaluator=____)