CommencezCommencez gratuitement

Ajuster les variables temporelles

Tout au long du cours, nous avons mentionné les risques de fuite d'information pendant l'entraînement d'un modèle. La fuite de données donne souvent des mesures de précision trop optimistes, mais lorsque des données réelles passent dans le modèle, les résultats sont souvent très décevants.

Dans cet exercice, nous allons nous assurer que DAYSONMARKET ne reflète que l'information disponible au moment de la prédiction. Autrement dit, si la maison est toujours sur le marché, nous ne savons pas combien de jours supplémentaires elle y restera. Nous devons ajuster test_df pour refléter l'information dont nous disposons au 2017-12-10.

REMARQUE : Cet exemple utilise la fonction lit(). Cette fonction permet d'utiliser une valeur unique là où un appel de fonction attend normalement une colonne entière.

Cette activité fait partie du cours

Ingénierie des caractéristiques avec PySpark

Voir le cours

Instructions de l’exercice

  • Importez les fonctions suivantes de pyspark.sql.functions pour les utiliser plus tard : datediff(), to_date(), lit().
  • Convertissez la chaîne de date '2017-12-10' en date PySpark en appelant d'abord la fonction littérale lit() dessus, puis to_date().
  • Créez test_df en filtrant les lignes où OFFMKTDATE est supérieur ou égal à split_date et où LISTDATE est inférieur ou égal à split_date avec where().
  • Remplacez DAYSONMARKET en calculant une nouvelle colonne appelée DAYSONMARKET. Cette nouvelle colonne doit correspondre à la différence entre split_date et LISTDATE. Utilisez datediff() pour effectuer le calcul de dates. Inspectez la nouvelle colonne et l'originale à l'aide du code fourni.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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()
Modifier et exécuter le code