Aan de slagBegin gratis

Tijdfeatures aanpassen

In deze cursus hebben we meerdere keren gewezen op het gevaar van het lekken van informatie naar je model tijdens het trainen. Data leakage zorgt ervoor dat je model erg optimistische nauwkeurigheidsstatistieken heeft, maar zodra er echte data doorheen gaat, vallen de resultaten vaak tegen.

In deze oefening zorgen we ervoor dat DAYSONMARKET alleen weerspiegelt welke informatie we hebben op het moment dat we de waarde voorspellen. Dus: als het huis nog steeds te koop staat, weten we niet hoeveel dagen het nog op de markt blijft. We moeten test_df aanpassen zodat het overeenkomt met de informatie die we hebben per 2017-12-10.

LET OP: In dit voorbeeld gebruiken we de functie lit(). Deze functie wordt gebruikt om enkelvoudige waarden toe te staan waar normaal een hele kolom wordt verwacht in een functieaanroep.

Deze oefening maakt deel uit van de cursus

Feature Engineering met PySpark

Bekijk cursus

Oefeninstructies

  • Importeer de volgende functies uit pyspark.sql.functions om later te gebruiken: datediff(), to_date(), lit().
  • Zet de datumstring '2017-12-10' om naar een PySpark-datum door eerst de letterlijke functie lit() erop aan te roepen en daarna to_date().
  • Maak test_df door te filteren op OFFMKTDATE groter dan of gelijk aan split_date en LISTDATE kleiner dan of gelijk aan split_date met where().
  • Vervang DAYSONMARKET door een nieuwe kolom met de naam DAYSONMARKET; deze nieuwe kolom moet het verschil zijn tussen split_date en LISTDATE. Gebruik datediff() om de datumcalculatie uit te voeren. Inspecteer de nieuwe kolom en de oorspronkelijke met de meegeleverde code.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

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 bewerken en uitvoeren