修正右偏態資料
在投影片中我們示範了如何用對數轉換來修正正偏態的資料(分佈大多集中在左側)。要修正負偏態(分佈大多在右側),在套用 \(\log\) 的反函數、也就是寫作 (1/\(\log\)) 之前,你需要先多做一步稱為「反射」(reflecting)的處理,讓資料更接近常態分佈。反射資料可使用以下公式對每個值進行轉換:$(x_{\text{max}} +1) – x$。
本練習屬於課程
使用 PySpark 進行特徵工程
練習說明
- 使用聚合函式
skewness()驗證'YEARBUILT'是否為負偏態。 - 使用
withColumn()建立新欄位'Reflect_YearBuilt',並對'YEARBUILT'的值做反射轉換。 - 使用
'Reflect_YearBuilt'欄位,再建立另一個欄位'adj_yearbuilt',其值為 1/log()(對該欄位值取 1/log())。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
from pyspark.sql.functions import log
# Compute the skewness
print(df.____({____: ____}).____())
# Calculate the max year
max_year = df.____({____: ____}).____()[0][0]
# Create a new column of reflected data
df = df.____(____, (max_year + 1) - df[____])
# Create a new column based reflected data
df = df.____(____, 1 / ____(df[____]))