始める無料で始める

スケーラーをスケールする

前の演習では、単一の変数に対して最小最大スケーリングを行いました。スケールすべき変数が大量にある場合、各列ごとに何百行ものコードは書きたくありませんよね。前の演習を発展させて、関数化してみましょう。

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

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

コースを見る

演習の手順

  • min_max_scaler という関数を定義し、引数としてデータフレーム df と、スケール対象の列名リスト cols_to_scale を取ります。
  • for ループでリスト内の各列を反復処理し、最小最大スケーリングを適用します。
  • 新しい列が追加されたデータフレーム df を返します。
  • 関数 min_max_scaler()df と列リスト cols_to_scale に適用します。

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

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

def ____(____, ____):
  # Takes a dataframe and list of columns to minmax scale. Returns a dataframe.
  for col in ____:
    # Define min and max values and collect them
    max_days = df.agg({col: 'max'}).collect()[0][0]
    min_days = df.agg({____: 'min'}).collect()[0][0]
    new_column_name = 'scaled_' + col
    # Create a new column based off the scaled data
    df = df.withColumn(____, 
                      (df[____] - min_days) / (max_days - min_days))
  return ____
  
df = min_max_scaler(____, ____)
# Show that our data is now between 0 and 1
df[['DAYSONMARKET', 'scaled_DAYSONMARKET']].show()
コードを編集して実行