LoslegenKostenlos starten

Zeitmerkmale anpassen

Wir haben in diesem Kurs mehrfach auf die Gefahr hingewiesen, beim Training Informationen in dein Modell durchsickern zu lassen. Data Leakage führt dazu, dass dein Modell sehr optimistische Genauigkeitsmetriken zeigt – aber sobald echte Daten durchlaufen, sind die Ergebnisse oft enttäuschend.

In dieser Übung stellen wir sicher, dass DAYSONMARKET nur das widerspiegelt, was wir zum Zeitpunkt der Vorhersage wissen. Das heißt: Wenn das Haus noch auf dem Markt ist, wissen wir nicht, wie viele Tage es noch dort bleiben wird. Wir müssen unser test_df so anpassen, dass es den Informationsstand zum 2017-12-10 abbildet.

HINWEIS: In diesem Beispiel verwenden wir die Funktion lit(). Diese Funktion wird genutzt, um einzelne Werte zuzulassen, wo in einem Funktionsaufruf eigentlich eine ganze Spalte erwartet wird.

Diese Übung ist Teil des Kurses

<Kurs>Feature Engineering mit PySpark</Kurs>
Kurs ansehen

Übungsanweisungen

  • Importiere die folgenden Funktionen aus pyspark.sql.functions, um sie später zu verwenden: datediff(), to_date(), lit().
  • Wandle den Datums-String '2017-12-10' in ein PySpark-Datum um, indem du zuerst die Literal-Funktion lit() darauf anwendest und danach to_date() aufrufst.
  • Erzeuge test_df, indem du mit where() nach OFFMKTDATE größer oder gleich split_date und LISTDATE kleiner oder gleich split_date filterst.
  • Ersetze DAYSONMARKET, indem du eine neue Spalte namens DAYSONMARKET berechnest. Die neue Spalte soll die Differenz zwischen split_date und LISTDATE sein; verwende datediff() für die Datumsberechnung. Prüfe die neue Spalte und das Original mit dem bereitgestellten Code.

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

from pyspark.sql.functions import ____, ____, ____

split_date = ____(____('2017-12-10'))
# Create Sequential Test set
test_df = df.____(df[____] >= ____).____(df[____] <= ____)

# Create a copy of DAYSONMARKET to review later
test_df = test_df.withColumn('DAYSONMARKET_Original', test_df['DAYSONMARKET'])

# Recalculate DAYSONMARKET from what we know on our split date
test_df = test_df.withColumn(____, ____(____, ____))

# Review the difference
test_df[['LISTDATE', 'OFFMKTDATE', 'DAYSONMARKET_Original', 'DAYSONMARKET']].show()
Code bearbeiten und ausführen