ÎncepețiÎncepe gratuit

Ajustarea caracteristicilor temporale

Pe parcursul acestui curs am menționat pericolele legate de scurgerea informațiilor către model în timpul antrenării. Data leakage va face ca modelul tău să afișeze metrici de acuratețe foarte optimiste, însă odată ce datele reale sunt rulate prin el, rezultatele sunt adesea dezamăgitoare.

În acest exercițiu, ne vom asigura că DAYSONMARKET reflectă doar informațiile disponibile în momentul în care facem predicția. Cu alte cuvinte, dacă o casă este încă pe piață, nu știm câte zile mai rămâne listată. Trebuie să ajustăm test_df pentru a reflecta informațiile disponibile la data de 2017-12-10.

NOTĂ: Acest exemplu folosește funcția lit(). Această funcție este utilizată pentru a permite transmiterea unor valori individuale acolo unde o funcție se așteaptă să primească o coloană întreagă.

Acest exercițiu face parte din cursul

Feature Engineering cu PySpark

Vezi cursul

Instrucțiuni pentru exercițiu

  • Importă următoarele funcții din pyspark.sql.functions pentru a le folosi mai târziu: datediff(), to_date(), lit().
  • Convertește șirul de caractere '2017-12-10' într-o dată PySpark apelând mai întâi funcția literală lit() pe acesta, apoi to_date().
  • Creează test_df filtrând înregistrările în care OFFMKTDATE este mai mare sau egal cu split_date și LISTDATE este mai mic sau egal cu split_date, folosind where().
  • Înlocuiește DAYSONMARKET calculând o nouă coloană tot cu numele DAYSONMARKET; noua coloană trebuie să reprezinte diferența dintre split_date și LISTDATE — folosește datediff() pentru a efectua calculul. Inspectează noua coloană și pe cea originală cu ajutorul codului furnizat.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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()
Editează și rulează codul