右裾(負の歪度)の補正
スライドでは、正の歪み(分布が主に左側にあるデータ)を対数変換で補正する方法を紹介しました。負の歪み(分布が主に右側にあるデータ)を補正するには、逆対数、つまり (1/\(\log\)) を適用して正規分布に近づける前に、"反転(reflecting)" と呼ばれるひと手間が必要です。データの反転は、各値を次の式で変換します: $(x_{\text{max}} +1) – x$。
この演習はコースの一部です
PySparkで学ぶ特徴量エンジニアリング
演習の手順
- 集約関数
skewness()を使って、'YEARBUILT'が負の歪度であることを確認します。 withColumn()を使って新しい列'Reflect_YearBuilt'を作成し、'YEARBUILT'の値を反転させます。'Reflect_YearBuilt'列を使い、値の 1/log() を取って、もう一つの列'adj_yearbuilt'を作成します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
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[____]))