Oprava dat s pravostranným zkreslením
Ve slides jsme si ukázali, jak lze logaritmickou transformací opravit data s kladným zkreslením (jejichž rozdělení je soustředěno převážně vlevo). Při záporném zkreslení (data soustředěna převážně vpravo) je potřeba udělat ještě jeden krok zvaný „reflektování" – teprve pak můžeš aplikovat inverzní funkci \(\log\), zapsanou jako (1/\(\log\)), a přiblížit tak rozdělení dat normálnímu. Reflektování funguje podle tohoto vzorce: \((x_{\text{max}} +1) – x\).
Toto cvičení je součástí kurzu
Feature Engineering with PySpark
Pokyny k cvičení
- Pomocí agregační funkce
skewness()ověř, že sloupec'YEARBUILT'má záporné zkreslení. - Pomocí
withColumn()vytvoř nový sloupec'Reflect_YearBuilt'a reflektuj hodnoty ze sloupce'YEARBUILT'. - Ze sloupce
'Reflect_YearBuilt'vytvoř další sloupec'adj_yearbuilt'tak, že z hodnot vypočítáš 1/log().
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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[____]))