1. Nauka
  2. /
  3. Kursy
  4. /
  5. Inżynieria cech z PySpark

Connected

ćwiczenie

Dostosowywanie cech czasowych

W trakcie tego kursu niejednokrotnie wspominaliśmy o ryzyku wyciekania informacji do modelu podczas treningu. Wyciek danych sprawia, że model osiąga bardzo optymistyczne wyniki na etapie oceny, ale gdy trafi na rzeczywiste dane, wyniki często okazują się rozczarowujące.

W tym ćwiczeniu zadbamy o to, aby kolumna DAYSONMARKET odzwierciedlała wyłącznie informacje dostępne w momencie przewidywania wartości. Innymi słowy – jeśli dom jest nadal wystawiony na sprzedaż, nie wiemy, jak długo jeszcze tam pozostanie. Musimy dostosować test_df tak, aby uwzględniał tylko dane, którymi dysponujemy na dzień 2017-12-10.

UWAGA: W tym przykładzie użyjemy funkcji lit(). Służy ona do przekazywania pojedynczych wartości w miejscach, gdzie funkcja oczekuje całej kolumny.

Instrukcje

100 XP
  • Zaimportuj następujące funkcje z pyspark.sql.functions, które będą potrzebne w dalszej części: datediff(), to_date(), lit().
  • Przekonwertuj ciąg znaków '2017-12-10' na datę PySpark – najpierw wywołaj na nim funkcję lit(), a następnie przekaż wynik do to_date().
  • Utwórz test_df, filtrując wiersze, w których OFFMKTDATE jest większe lub równe split_date, a LISTDATE jest mniejsze lub równe split_date – użyj do tego metody where().
  • Zastąp kolumnę DAYSONMARKET nową kolumną o tej samej nazwie, obliczoną jako różnica między split_date a LISTDATE – skorzystaj z funkcji datediff(). Porównaj nową i oryginalną kolumnę za pomocą dostarczonego kodu.