Kom igångKom igång gratis

Justera tidssärdrag

Vi har under hela kursen nämnt riskerna med att läcka information till modellen under träning. Datainläckning leder till att modellen visar alltför optimistiska noggrannhetsmått – men när verklig data används blir resultaten ofta väldigt nedslående.

I den här övningen ska vi se till att DAYSONMARKET bara återspeglar den information vi har tillgänglig vid tidpunkten för prediktion. Det vill säga: om huset fortfarande är till salu vet vi inte hur många dagar det kommer att ligga kvar på marknaden. Vi behöver justera test_df så att det bara innehåller den information vi har per 2017-12-10.

OBS: Det här exemplet använder funktionen lit(). Den används för att tillåta enskilda värden där en hel kolumn förväntas i ett funktionsanrop.

Den här övningen är en del av kursen

Feature Engineering med PySpark

Visa kurs

Övningsinstruktioner

  • Importera följande funktioner från pyspark.sql.functions för senare användning: datediff(), to_date(), lit().
  • Konvertera datumsträngen '2017-12-10' till ett PySpark-datum genom att först anropa literalfunktionen lit() på den och sedan to_date().
  • Skapa test_df genom att filtrera rader där OFFMKTDATE är större än eller lika med split_date och LISTDATE är mindre än eller lika med split_date med hjälp av where().
  • Ersätt DAYSONMARKET genom att beräkna en ny kolumn med namnet DAYSONMARKET – den nya kolumnen ska vara skillnaden mellan split_date och LISTDATE. Använd datediff() för datumberäkningen. Granska den nya kolumnen och den ursprungliga med hjälp av den angivna koden.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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()
Redigera och kör kod