始める無料で始める

One Hot Encoding

アメリカでは、住む場所によって子どもが通える学校が決まります。そのため、将来の住居がどの学区に属するかは、多くの人にとって重要な関心事です。SCHOOLDISTRICTNUMBER は番号で示されていますが、実際にはカテゴリ変数です。つまり、これらの値を合計・平均しても意味がありません。そこでこの例では、SCHOOLDISTRICTNUMBER をカテゴリ変数から数値ベクトルに変換し、後で Machine Learning モデルで使えるようにします。

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

PySparkで学ぶ特徴量エンジニアリング

コースを見る

演習の手順

  • 入力を SCHOOLDISTRICTNUMBER、出力を School_Index とする StringIndexer トランスフォーマーを string_indexer という名前で作成します。
  • トランスフォーマー string_indexerfit()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)
コードを編集して実行