Rechts-schief verteilte Daten korrigieren
In den Folien haben wir gezeigt, wie du mit Log-Transformationen positiv schiefe Daten korrigieren kannst (Daten, deren Verteilung überwiegend links liegt). Um eine negative Schiefe zu korrigieren (Daten überwiegend rechts), brauchst du einen zusätzlichen Schritt, das sogenannte „Reflektieren“, bevor du die Inverse von \(\log\), geschrieben als (1/\(\log\)), anwenden kannst, damit die Daten eher einer Normalverteilung ähneln. Das Reflektieren der Daten nutzt folgende Formel, um jeden Wert zu spiegeln: \((x_{\text{max}} +1) – x\).
Diese Übung ist Teil des Kurses
<Kurs>Feature Engineering mit PySpark</Kurs>Übungsanweisungen
- Verwende die Aggregatfunktion
skewness(), um zu prüfen, dass'YEARBUILT'eine negative Schiefe hat. - Verwende
withColumn(), um eine neue Spalte'Reflect_YearBuilt'zu erstellen und die Werte von'YEARBUILT'zu reflektieren. - Erstelle aus der Spalte
'Reflect_YearBuilt'eine weitere Spalte'adj_yearbuilt', indem du 1/log() der Werte nimmst.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
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[____]))