出発時刻のバケット化
一日の時刻データは回帰モデルでは扱いが難しい一方で、バケット化にとても向いています。
このレッスンでは、フライトの出発時刻を 0(00:00 に対応)から 24(24:00 に対応)までの数値から、区間に分けたバケット値へ変換します。さらに、そのバケット値を one-hot エンコードします。
この演習はコースの一部です
Machine Learning with PySpark
演習の手順
- 0, 3, 6, …, 24(0:00、03:00、06:00、…, 24:00 に対応)を境界に持つ bucketizer オブジェクトを作成します。入力列は
depart、出力列はdepart_bucketと指定します。 flightsデータの出発時刻をバケット化します。departとdepart_bucketの先頭5件を表示します。- one-hot encoder オブジェクトを作成し、入力列に
depart_bucket、出力列にdepart_dummyを指定します。 - エンコーダをバケット化したデータに
fit()し、その後このデータをダミー変数に変換するためにtransform()を使います。depart、depart_bucket、depart_dummyの先頭5件を表示します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
from pyspark.ml.feature import Bucketizer, OneHotEncoder
# Create buckets at 3 hour intervals through the day
buckets = ____(splits=[____], inputCol='____', outputCol='____')
# Bucket the departure times
bucketed = buckets.____(____)
bucketed.____('____', '____').____(____)
# Create a one-hot encoder
onehot = ____(inputCols=['____'], outputCols=['____'])
# One-hot encode the bucketed departure times
flights_onehot = ____.____(____).____(____)
flights_onehot.____('____', '____', '____').____(____)