One Hot Encoding
アメリカでは、住む場所によって子どもが通える学校が決まります。そのため、将来の住居がどの学区に属するかは、多くの人にとって重要な関心事です。SCHOOLDISTRICTNUMBER は番号で示されていますが、実際にはカテゴリ変数です。つまり、これらの値を合計・平均しても意味がありません。そこでこの例では、SCHOOLDISTRICTNUMBER をカテゴリ変数から数値ベクトルに変換し、後で Machine Learning モデルで使えるようにします。
この演習はコースの一部です
PySparkで学ぶ特徴量エンジニアリング
演習の手順
- 入力を
SCHOOLDISTRICTNUMBER、出力をSchool_IndexとするStringIndexerトランスフォーマーをstring_indexerという名前で作成します。 - トランスフォーマー
string_indexerをfit()とtransform()でdfに適用します。変換後のデータフレームはindexed_dfに保存します。 - 入力を
School_Index、出力をSchool_VecとするOneHotEncoderトランスフォーマーをencoderという名前で作成します。 indexed_dfに対してtransform()で変換を適用します。提供されたコードで、変換の各ステップを確認します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
from pyspark.ml.feature import OneHotEncoder, StringIndexer
# Map strings to numbers with string indexer
string_indexer = ____(inputCol=____, outputCol=____)
indexed_df = ____.____(df).____(df)
# Onehot encode indexed values
encoder = ____(inputCol=____, outputCol=____)
encoded_df = ____.____(indexed_df)
# Inspect the transformation steps
encoded_df[['SCHOOLDISTRICTNUMBER', 'School_Index', 'School_Vec']].show(truncate=100)