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