Korekcja danych z prawostronną skośnością
Na slajdach pokazaliśmy, jak za pomocą transformacji logarytmicznej można skorygować dodatnią skośność danych (gdy rozkład jest skupiony głównie po lewej stronie). Aby skorygować ujemną skośność (gdy dane skupiają się po prawej stronie), trzeba wykonać dodatkowy krok zwany „odbiciem" – zanim będzie można zastosować odwrotność \(\log\), czyli (1/\(\log\)), tak żeby rozkład danych bardziej przypominał rozkład normalny. Odbicie danych polega na przekształceniu każdej wartości według wzoru: \((x_{\text{max}} +1) – x\).
To ćwiczenie jest częścią kursu
Inżynieria cech z PySpark
Instrukcje do ćwiczenia
- Użyj funkcji agregującej
skewness(), aby potwierdzić, że kolumna'YEARBUILT'ma ujemną skośność. - Za pomocą
withColumn()utwórz nową kolumnę'Reflect_YearBuilt'i odwróć wartości kolumny'YEARBUILT'. - Korzystając z kolumny
'Reflect_YearBuilt', utwórz kolejną kolumnę'adj_yearbuilt', stosując do jej wartości przekształcenie 1/log().
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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[____]))