Inizia subitoInizia gratis

Regolare le feature temporali

Nel corso abbiamo citato più volte i rischi di far trapelare informazioni al tuo modello durante l'addestramento. La data leakage farà apparire le metriche di accuratezza del modello troppo ottimistiche, ma quando lo userai su dati reali i risultati saranno spesso deludenti.

In questo esercizio ci assicureremo che DAYSONMARKET rifletta solo le informazioni disponibili al momento della previsione. Cioè, se la casa è ancora sul mercato, non sappiamo per quanti giorni resterà in vendita. Dobbiamo quindi adattare il nostro test_df per riflettere le informazioni disponibili al 2017-12-10.

NOTA: Questo esempio userà la funzione lit(). Questa funzione permette di usare valori scalari dove una funzione si aspetterebbe un'intera colonna.

Questo esercizio fa parte del corso

Feature Engineering con PySpark

Visualizza corso

Istruzioni dell'esercizio

  • Importa le seguenti funzioni da pyspark.sql.functions per usarle più avanti: datediff(), to_date(), lit().
  • Converte la stringa di data '2017-12-10' in una data pyspark chiamando prima la funzione letterale lit() su di essa e poi to_date().
  • Crea test_df filtrando OFFMKTDATE maggiore o uguale a split_date e LISTDATE minore o uguale a split_date usando where().
  • Sostituisci DAYSONMARKET calcolando una nuova colonna chiamata DAYSONMARKET; la nuova colonna deve essere la differenza tra split_date e LISTDATE. Usa datediff() per eseguire il calcolo tra date. Ispeziona la nuova colonna e l'originale usando il codice fornito.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

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()
Modifica ed esegui il codice