Scaling your scalers
在前一個練習中,我們對單一變數做了 min-max 縮放。現在假設你有很多變數需要縮放,就不想為每個變數都寫上百行程式碼。讓我們延伸上一題,把它封裝成一個函式。
本練習屬於課程
使用 PySpark 進行特徵工程
練習說明
- 定義名為
min_max_scaler的函式,參數為資料框df,以及要縮放欄位的清單cols_to_scale。 - 使用
for迴圈走訪清單中的每個欄位,並對它們做 min-max 縮放。 - 回傳加入新欄位後的資料框
df。 - 對
df與欄位清單cols_to_scale套用函式min_max_scaler()。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
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()